Python正式发布年度大更新3.13.0:实验性支持no-GIL、性能起飞!

Python正式发布年度大更新3.13.0:实验性支持no-GIL、性能起飞!
最新回答
嗝是迷路的屁

2022-08-17 19:01:58

Python 3.13.0 年度大更新正式发布:实验性支持no-GIL,性能显著提升

Python 3.13.0 最新稳定版已于 10 月 7 日正式发布,此次更新对语言、实现和标准库进行了一系列重要更改,为开发者带来了诸多新特性和性能优化。

一、重大更新亮点

  1. 全局解释器锁的可选禁用 (no-GIL)

    Python 的全局解释器锁(GIL)一直是多线程性能提升的瓶颈。在 Python 3.13 中,引入了实验性的 no-GIL 支持,允许开发者在构建时选择禁用 GIL,从而提高基于线程的并行处理能力。这一改进使得多线程程序能够充分利用计算机上的所有内核,显著提升性能,尤其是在 CPU 密集型任务上。

    如上图所示,在禁用 GIL 的自由线程模式下,Python 3.13 的性能明显优于其他版本。

  2. 实验性的即时编译器 (JIT)

    Python 3.13 还引入了实验性的即时编译器(JIT),该编译器能够将 Python 代码编译为机器代码,从而提高代码执行效率。启用 JIT 的 Python 3.13 比 Python 3.12 和常规的 Python 3.13 更快,为开发者带来了显著的性能提升。

    上图展示了启用 JIT 后 Python 3.13 的性能优势。

二、no-GIL 的实现计划

Python 开发团队计划将 no-GIL 的实现分成三个阶段:

  • 实验阶段:通过提供 build-time 选项,让开发者在构建时选择启用自由线程(free-threaded)。在此阶段,明确告知开发者该功能是实验性的,不建议用于生产环境。
  • 支持但不默认阶段:在 API 和 ABI 变更充分解决,并且有足够的社区支持时,开始启动该阶段。此时,no-GIL 将作为可选功能提供,但默认不启用。
  • 默认阶段:在条件成熟时,默认启用自由线程(初期仍支持禁用)。该阶段的目标是使开发者能够尽可能无缝且无痛地进行升级和兼容。

三、其他值得关注的变化

  1. 新的交互式解释器 (REPL)

    Python 3.13 提供了一个新的交互式解释器(REPL),为开发者提供了更加友好和高效的编程体验。

  2. iOS 和 Android 官方支持

    Python 3.13 将 iOS 和 Android 正式纳入 Tier 3 级别的官方支持平台,为移动开发者提供了更多的选择和便利。

  3. 更好的错误信息

    Python 3.13 提供了更加详细和清晰的错误信息,帮助开发者更快地定位和解决问题。

  4. 改进静态类型

    Python 3.13 对静态类型进行了改进,提高了类型检查器的准确性和可靠性。

  5. 支持的最低 macOS 版本更新

    Python 3.13 支持的最低 macOS 版本已从 10.9 更改为 10.13(High Sierra),并且今后将不再支持较旧的 macOS 版本。

四、总结

Python 3.13.0 的发布标志着 Python 语言在性能和功能上的又一次重大飞跃。实验性支持 no-GIL 和 JIT 编译器的引入,为开发者带来了显著的性能提升。同时,新的交互式解释器、iOS 和 Android 的官方支持、更好的错误信息和改进的静态类型等特性,也使得 Python 3.13 更加完善和易用。开发者可以访问

官方文档
查看详细更新说明,并尝试将这些新特性应用到自己的项目中。