大家都知道,操作系统可以同时运行多个任务。比如你一边听音乐,一边聊微信,一遍写博客。现在的cpu大都是多核的,但即使是过去的单核cpu也是支持多任务并行执行。
在Python中使用线程来避开阻塞任务
线程的使用流程
在任意一个进程里,任何时刻,只能执行一个线程
GIL锁
全局解释器锁
Python在设计的时候,还没有多核处理器的概念。因此,为了设计方便与线程安全,直接设计了一个锁。这个锁要求,任何进程中,一次只能有一个线程在执行。
因此,并不能为多个线程分配多个CPU。所以Python中的线程只能实现并发,而不能实现真正的并行。
但是Python3中的GIL锁有一个很棒的设计,在遇到阻塞(不是耗时)的时候,会自动切换线程。