Pyhton中GIL的工作原理及性能优化问题

一、

  • GIL的说明
    首先说明,GIL(global interpreter lock),中文称全局解释器锁,并不是Python的特性,它是CPython的产物,像JPythonIronPython因为其语言的特性,所以不需要GIL的帮助。

  • GIL的工作原理及导致的问题
    为了解决多线程之间数据完整性和状态同步的问题,最简单方法自然就是加锁,这是GIL的由来。
    在一个古老的单核CPU上调度多个线程任务,大家相互共享一个全局锁,谁在CPU执行,谁就占有这把锁,直到这个线程因为IO操作或者Timer Tick到期让出CPU,没有在执行的线程就安静的等待着这把锁。
    然而在应用程序和操作系统逐渐由多任务单核心转向多任务多核心的今天,除python多线程在执行多阻塞高延迟IO时可以提升程序效率外,其他情况GIL并不能对效率有所提升。
    例如:
    (1)线程1、2、3轮流执行,每一个线程在执行的时候,都会锁住GIL,以阻止别的线程执行;同样的,每一个线程在因为IO操作或者Timer Tick到期后,会释放GIL,以允许别的线程开始利用资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值