关于GIL全局解释器锁自己的理解

补了GIL(全局解释器)的知识点,自己记录一下加深印象(详情见其他人博客。。)
GIL是保证线程安全的一个底层超级锁,跟Lock不是一个概念。只影响线程,对进程没有影响。
作用是锁定整个解释器内部的全局资源,每个线程要运行都要先获得GIL,这就使得Cpython解释器下 线程是串行的(假的并行)。

而针对IO密集型和计算密集型。GIL的存在使得在处理计算密集型任务时,效率会非常低下,且相当于子在单核下做多线程,根本利用不了多核CPU的优势。原理是 计算密集型任务之间切换的需要时间。A任务拿到GIL进行处理,处理完释放GIL,而B要想拿到GIL得先调度,但调度的时间中 A再次抢到了GIL。差不多是这样子。

而对于IO密集型任务则没有这个情况,IO密集型任务我理解为 --发送—等待回应,而等待回应过程中 释放GIL,切换别的线程发送,就不会出毛病。

所以处理IO密集型用线程,而计算密集型就用进程吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值