CPython 核心开发者 Thomas Wouters 今日代表 Python 指导委员会宣布了关于 PEP 703 提案(在 CPython 中使全局解释器锁成为可选)的最新进展。
他表示,从社区对 no-GIL 提案的民意调查结果来看,整体是积极的支持态度。因此 Python 指导委员会计划接受 PEP 703 提案,目前正在研究相关细节。
Thomas Wouters 介绍了指导委员会的预期想法:
- 从长远来看(可能 5 年以上),no-GIL 构建应该是唯一的构建。他们不希望在出现 GIL 和 no-GIL 构建(以及扩展模块)之间创建永久的区分
- 保持向后兼容,避免出现另一种 Python 3 的情况
- 承诺完全切换到 no-GIL 构建之前,需要看到社区对其的支持
- 在将 no-GIL 作为默认设置之前的任何时候,如果事实证明它会带来太大的破坏性而收益太少,他们会改变想法。这样的决定可能意味着回滚所有工作,因此在确定要将 no-GIL 设置为默认值之前,特定于 no-GIL 的代码应该在某种程度上是可识别的。
基于此,他们的开发方向分为三个阶段:
- 短期内,将 no-GIL 构建添加为实验性构建模式,大概是在 Python 3.13 提供
- 从中期来看,当确信有足够的社区支持来使 no-GIL 的生产使用可行后,他们会支持 no-GIL 构建,但不是默认
- 从长远来看,他们希望 no-GIL 成为默认值,并删除 GIL 的任何痕迹(不会不必要地破坏向后兼容性)
PEP 703 提案建议向 CPython 添加构建配置 (--disable-gil
),使其在没有全局解释器锁的情况下运行 Python 代码,并进行必要的更改以保证解释器线程安全。
根据提案的描述,CPython 的全局解释器锁 (GIL) 阻止了同时多线程执行代码,成为了在多核 CPU 上提高 Python 代码运行效率的一大障碍。
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END