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

liftword6个月前 (01-06)技术文章57

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作为上手语言合适吗?

Python,目前最流行的语言之一,好多人建议学编程从python开始。的确,Python 是公认的最适合初学者的编程语言之一,其语法简洁明了,强调代码的可读性和简洁性。具有大量的学习资源和教程,适用...

一次Java和Python的简单且直观的比较

我的主要开发语言是Java,并且多年来主要项目基本都是使用Vue+Springboot来实现客户业务。最近几年,Python绝对是成长最快的语言,用户量暴增,已经成了很多大学的主要编程课程了。同时,码...

Python的基本概念和语法(超级详细)

Python是一种流行的编程语言,它有很多优点,比如简洁、易读、灵活和丰富的库。Python可以用来开发各种应用,比如网站、数据分析、机器学习、游戏等。在这篇教程中,我将介绍一些python的基本概念...

1.3.1 python交互式模式的特点和用法

什么是Python交互模式Python交互模式,也叫Python交互式编程,是一种在Python解释器中运行的模式,它允许用户在解释器窗口中输入单个Python语句,并立即查看结果,而不需要编写整个程...

使用 Python 数据类的 10 个令人信服的理由

Python 在3.7 版(PEP 557)中引入了数据类。顾名思义,数据类包含数据,使我们能够在类中解锁更多功能。概述传统上,我们使用特殊方法来初始化类属性并在这些属性之间执行操作。但是,当开发人员...

「Python自动化办公」分享几个好用到爆的模块,建议收藏

作者:俊欣来源:关于数据分析与可视化今天小编来给大家推荐几个在自动化办公领域当中非常好用的Python模块,可以帮助大家在工作当中及大地提高效率,避免重复机械化地操作流程。Pathlib涉及到文件系统...