python GIL锁,如何解决

版权声明:转载请标明出处 https://blog.csdn.net/gymaisyl/article/details/85194012

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解决;

猜你喜欢

转载自blog.csdn.net/gymaisyl/article/details/85194012