Python 3.13 获首个 Beta 版更新:改进解释器 / 编译器性能

Python 3.13 beta 1发布了,主要新特性包括禁用全局解释器锁(GIL)以进行自由线程处理的选项,以及一个实验性的即时编译器,两者都可以提高性能。Beta版本的出现也意味着3.13版本已经冻结了功能。

大多数排名 - 比如来自Redmonk的这个排名 - 将Python排在流行程度仅次于JavaScript的第二位,由于与人工智能和机器学习的关联,使用量正在增加。不过,CPython相对较慢,其结果是性能成为近期版本的关注重点。

版本3.13包括发行说明称为“基本JIT编译器”的内容,尽管目前默认情况下已禁用。针对此功能的PEP(Python增强提案)解释称,这是“与CPython传统执行Python代码的方式明显不同的一步”。目前Python编译为字节码,然后在运行时进行解释。Python 3.12已经包括了将指令分解为更小的微操作然后对其进行优化的代码,但目前执行此操作的开销超过了性能的好处,因此已禁用。

JIT编译器进一步采取了静态编译优化微操作的步骤,旨在克服瓶颈并提高性能。它不会启用,直到满足几个条件,包括至少有5%的性能改进,对部署的干扰最小,以及得到Python steering council的批准。还有可能的安全性问题,另一个缺点是在运行时内存使用更多。

为什么包含了此功能但默认情况下已禁用?目前,“JIT的速度与现有的专用解释器几乎一样快”,因此尚未达到5%的性能增长目标;但是,此功能的作者表示,即使这样,这也是一个“重要的成就,这也是为什么这种方法被认为足够可行而被合并到主分支进行进一步开发的主要原因”。已经有许多改进正在进行中,因此这很可能成为未来的性能提升。

Python 3.13中的另一个关键实验是使GIL成为可选项,从而消除了并发的一个主要障碍。根据PEP,“这种缺乏并发性通常比执行Python代码的速度更大的问题。”另一个优点是Python代码将更能够表达并行性,这对于使代码更易于维护,并将Python作为学习编程语言的语言具有重要意义。

在3.13版本中还有更多内容,包括一个新的交互式shell,其中包括带颜色的提示,带有历史记录保留的多行编辑,以及使用F1键进行帮助浏览。但这只在类Unix系统(如macOS和Linux)上有效。

Apple的iOS现在将成为Python的支持平台,但仅为第3级(三个支持级别中的一个),不包括控制台或交互式使用。

3.13版本中没有新的模块,但许多模块有改进。一些模块将被新的弃用,等待在3.14、3.15或3.16版本中移除。

Python 3.13发布计划包括四个beta版本和两个发行候选版本,最终版本预计于2024年10月初发布。尽管功能冻结,但发布经理Thomas Wouters表示,“直到发行候选版本阶段开始之前,功能可能会被修改,或者在极少数情况下被删除。”该阶段定于7月底开始。

主要更新内容如下:

  • 引入了全新交互式解释器,改进了性能,同时支持多行编辑 / 颜色;
  • 引入了“实验性”自由线程构建模式,通过让全局解释器锁成为可选,从而允许线程更并发地运行(为了实现相关模式,同时引入了 mimalloc 的修改版本);
  • 改进了即时编译器 (JIT) 性能;
  • 循环垃圾收集器现在更具增量性,收集垃圾时间应当更短;
  • 减少了 RAM 用量及 .pyc 文件的体积;
  • 为 dbm 模块添加了新的 dbm.sqlite3 后端,现在在创建新文件时默认使用。

相关文章

Python编程语言的优势有哪些?

1.简单易学:Python采用极简主义设计思想,语法简单优雅,不需要很复杂的代码和逻辑,即可实现强大的功能。这使得Python很适合初学者学习,可以帮助初学者快速入门。2.开源免费:Python所有内...

都2023年了,为什么大家还都在吹捧 Python?

2023 年,Python 还可学吗?答案当然是可。近些年间,Python 的火热有目共睹,作为一种功能强大的高级编程语言,在 2018 年的时候它的流行程度就得到了大幅提高。入门人工智能有很多种选择...

不知道学哪种编程语言?Python是首选!

如果编程语言是女生,绝对会让你眼花缭乱,思绪翩翩……有清纯可爱型的,有知性优雅型的,有成熟性感型的,还有如初恋一般甜蜜型的……,那么问题来了,如果你是一个什么都不懂的小白,应该选择哪种语(女)言(人)...

学JAVA好?还是学Python好?

近几年随着Python的迅猛发展,是大多数人产生了迷茫,一方面学Java是行业的主流,另一方面Python发展所带来的巨大红利确实很诱人,再加上Python本身所具备的优点,让学Python也成为大家...

为什么说Python更适合编程入门学习呢?

现在很多新手学生将Python作为了入门级的编程语言学习,在很多高校中也是。为什么高校中很多人不喜欢通过C语言来作为编程入门语言呢?不是说C语言能够帮助初学者更好的掌握计算机的底层原理么?那么用Pyt...

有了python,还需要IFTTT、Zapier这些低代码自动化应用吗?

Claude:在某些情况下,Python编程确实可以取代低代码自动化平台,甚至提供更强大的功能。但两者也有各自的优势,更好的方式是结合使用:Python的优势:1. 更强大的编程能力,可以实现更复杂的...