GIL

GIL存在的原因

  • python内核基于C编写, 大部分C语言库都不是原生线程安全的

特性

  • 多线程进行cpu密集型计算,会存在频繁的上下文切换,使得效率低下
  • 多线程只对I/O密集型计算产生正面效果,而至少有一个cpu密集型线程存在,那么多线程效率就会因GIL而大幅下降

py3对GIL的改进

  • 强制线程在固定时间后释放
  • cpu密集型会优先获取
  • 在其他线程有机会运行之前,不允许当前线程重新获取(动态调整自身的优先级,py2.x没有此机制)
上一篇:GIL全局解释锁


下一篇:Python 到底是 线程快 还是 进程快