社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 团队官宣下线 GIL:可选择性关闭

算法爱好者 • 3 年前 • 421 次点击  

↓推荐关注↓

转自:量子位

鹅妹子嘤!拖累AI和ML运算的GIL锁终于关!闭!了!

Python官方宣布,在新版的CPython中,GIL锁将成为「可选择项」。

人们终于不必再受到这一限制的困扰了。

这则通告中提到的colesbury,多年来一直致力于让Python官方把GIL移除。

现在这个梦想终于实现了,不仅Python官方对他表示了感谢,网友也给他发去了贺电。

GIL的关闭,意味着此前只能串行的多个线程将可以并行运行。

对于人工智能、机器学习等计算密集型领域,工作效率将大大提高。

听闻这一消息,已经用了20年、快要把Python当成母语的老用户流下了激动的泪水。

LeCun也发文表示庆祝:再也没有GIL了!

再见了,GIL

根据官方通告显示,GIL的下线工作将分为三个阶段。

短期之内,出于兼容性等考量,「无GIL」将作为实验性功能供用户选择。

在这一阶段(大约是3.13版本),Python团队也需要进行摸索,可能无法提供社区支持。

同时官方也希望发行商在这一阶段不要将no-GIL作为默认属性。

这一过程可能持续1-2年时间。

当有足够的社区支持能力后,GIL的退出将进入中期阶段。

这主要取决于修改后的API对旧版本的兼容程度。

这一阶段当中,分销商将开始提供no-GIL版本,但不同的包之间可能存在较大差异

而Python团队的长期目标是将no-GIL作为默认选项,甚至彻底抹去GIL的一切痕迹。

官方对此十分期待,但同时为了确保兼容性,也表示不能操之过急。

官方预计,这一目标可能要等到五年之后实现。

同时官方也表示,如果在此期间发现关闭GIL的风险远大于收益,会进行回滚操作。

不过,也有吃瓜群众表示,GIL是个嘛玩意儿?

而且这条的浏览量在评论区还排上了第二名。

那就让我们来看看,这把「锁🔐」,究竟「锁」住了什么。

GIL「锁」住了什么

GIL全名为全局解释器锁(Global Interpreter Lock)。这是一种线程管理机制,并不根属于Python语言,而是存在于CPython中。

Cpython是由官方推出、用C语言实现的Python代码解释器。

换言之,只要用的Python是官方版本,都会受到GIL的影响。

在GIL锁开启的情况下,同个进程内的多个线程只能串行而不能并行。

GIL的释放有两种触发方式,一种是遇到I/O操作,另一种则是超出时间限制。

遇到I/O操作时,原线程运行结束,其余线程对CPU使用权进行「竞争」。

但如果是超时释放,原来运行的线程会重新加入这场「竞争」。

这种做法是出于安全性考虑,但已经不能适应时代的发展。

根据GIL的原理,主要进行I/O操作的程序,比如网页爬虫,受到的影响并不大。

而对于计算密集型的程序来说,就是另一回事了。

GIL诞生时的CPU还只有一个核心,但在发展的过程中,GIL始终保持着全局锁定的特性。

这就导致了在多核CPU早已普及的今天,多出的核心并没有被利用,大量算力被浪费。

这意味着,对于AI、ML等计算密集领域,效率会出现严重降低。

AI发展如火如荼的现在,姗姗来迟的解决方案终于出炉。

不过,就像这位网友所说的,晚一些总比没有好。

参考链接:
[1]https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474
[2]https://twitter.com/soumithchintala/status/1685524194144989184
[3]https://en.wikipedia.org/wiki/Global_interpreter_lock
[4]https://wiki.python.org/moin/GlobalInterpreterLock

- EOF -

推荐阅读  点击标题可跳转

1、计算机成下一个土木了吗?

2、AI,正在疯狂污染中文互联网

3、Google 在一个函数中放入 2 万个变量,引发 Firefox 大崩溃


觉得本文有帮助?请分享给更多人

推荐关注「算法爱好者」,修炼编程内功

点赞和在看就是最大的支持 ❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/159260