GIL锁:
全局解释器锁,是由于Cpython解释器自带的;在Cpython解释器中运行的多线程,每个线程在执行的时候,都会先获取一个GIL锁,保证同一时刻只有一个线程可以执行;
线程释放GIL锁的情况:
在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL Python 3.x使用计时器(执行时间达到阈值后,当前线程释放GIL)或Python 2.x,tickets计数达到100
Python语言和GIL没有半毛钱关系。仅仅是由于历史原因在Cpython虚拟机(解释器),难以移除GIL。
解决方法:
Python使用多进程是可以利用多核的CPU资源的;使用多进程执行,此将要面临解决共享数据的问题,多用queue或pipe解决;