Python中的GIL问题

本文探讨了Python中的全局解释器锁(GIL)现象,解释了它为何会导致多线程性能瓶颈,并提出了几种可能的解决策略,旨在帮助开发者优化Python多线程程序。
摘要由CSDN通过智能技术生成


查看原文:http://www.wyblog.cn/2017/02/18/python%e4%b8%ad%e7%9a%84gil%e9%97%ae%e9%a2%98/

定义

GIL全称是Global Interpreter Lock,首先看看官方定义:
In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)
定义说,GIL是多线程间的一把互斥锁,并且是一把全局锁,它保证了Cpython在内存管理上面是线程安全的。 这里要注意一点的是,官方定义开头就给了限制范围,是在CPython这个解释器下。我们知道,python存在各种各样的解释器,也就是说,在某些解释器下,其实并不存在GIL这个东西,经过查阅资料,像JPython中就不存在GIL。

背景

为了发挥多核CPU性能,程序多采用多线程/多进程方式设计,这里仅关注多线程模式。多线程模式必然涉及到线程之间的通信或者同步问题,最简单粗暴的解决方式就是
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值