简单解释
Python中的多线程是单CPU意义上的多线程,它和多CPU上的多线程有着本质的区别,这是因为Python中存在着一个叫Global Interpreter Lock(GIL)全局解释器锁。
在解释器执行任何Python代码时,都需要先获取这把锁,即,同一时刻内只有一条线程可以在CPU中运行。但Python多线程并不是毫无用处,在IO操作时会释放这把GIL锁,在IO密集型程序中,一个线程处于IO等待的时候,另一个线程便可以获得锁并在CPU中运行。
但如果是纯计算的程序,没有IO操作,则只有取得GIL的线程可以在CPU中运行,其他线程都处于等待状态,相当于单线程在跑,并且上下文切换还会有所开销。
详细说明
先明确一个问题,Python中的多线程是假的多线程!
为什么这么说,我们先明确一个概念,全局解释器锁(GIL)。
Python代