Python 指导委员会计划接受 PEP 703 提案,让全局解释器锁成为可选

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 代码运行效率的一大障碍。

猜你喜欢

转载自www.oschina.net/news/251454/steering-council-notice-about-pep-703