前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 3.13:性能和规模的新突破

Python 3.13:性能和规模的新突破

作者头像
云云众生s
发布于 2024-10-09 06:33:54
发布于 2024-10-09 06:33:54
1.2K0
举报
文章被收录于专栏:云云众生s云云众生s

Python 3.13 引入了实验性的自由线程模式和 JIT 编译器,为提高性能和多核利用率铺平了道路,同时增强了交互体验。

译自 Python 3.13: Blazing New Trails in Performance and Scale,作者 Darryl K Taft; Joab Jackson。

Python 3.13 预计将于今天发布,代表着 Python 编程语言的重大进步,特别是在性能和开发人员体验方面,实验性的自由线程模式和 即时 (JIT) 编译器 为未来的改进奠定了基础。

最初计划于 10 月 1 日发布,新版本因性能回归而推迟,Python 最新稳定版本的发布时间已改为 10 月 7 日。

如上所述,Python 的一些主要变化包括一个新的 交互式解释器,以及对在 自由线程模式 下运行和 JIT 编译器 的实验性支持。

自由线程

实验性的自由线程 CPython 功能允许在禁用 全局解释器锁 (GIL) 的情况下运行。它需要一个单独的可执行文件,可以通过官方的 Windows 和 macOS 安装程序安装,也可以从源代码构建。它可以充分利用多核处理器。目前,它在单线程操作中会造成性能损失。

“自由线程试图从 CPython 中移除 全局解释器锁,而全局解释器锁一直是实现 基于线程的 并行性的最大障碍,尤其是在执行 CPU 密集型 任务时,”Real Python 的内容创作者 Bartosz Zaczyński 在一篇文章中写道。“简而言之,GIL 允许在任何给定时间只运行一个执行线程,无论你的 CPU 配备了多少个核心。这阻止了 Python 有效地利用可用的计算能力。”

历史上,Python 的 GIL 阻止了线程的真正并发执行,Stanley SeibertAnaconda 的社区创新高级总监,告诉 The New Stack。然而,Python 3.13 中的新实验性功能允许并发执行纯 Python 代码。该功能旨在更好地利用多核处理器,而不会牺牲单线程性能。由于其实验性,该功能在本版本中默认关闭。该功能由 Meta 工程师开发,并获得了 Python 指导委员会的批准。Seibert 说,Anaconda 正在为社区开发测试包,以便他们尝试使用此功能。

JIT 编译器

与此同时,“到目前为止,你只能通过外部工具和库来利用 Python 的各种 JIT 编译器,”Zaczyński 写道。“其中一些,比如 PyPyPyjion,提供了或多或少通用的 JIT 编译器,而另一些,比如 Numba,则专注于特定的用例,比如数值计算。”

Python 3.13 中新的实验性 JIT 编译器使用了一种名为 复制和修补 的相当新的算法,他写道。

“这种编译技术的核心思想是找到一个适合目标 CPU 的预编译机器代码模板,并用缺失的信息(例如变量的内存地址)填充它,”他在文章中指出。

Zaczyński 补充说,长远计划是将 Python 的 JIT 提升到一个程度,使其在代码执行性能方面真正产生显著差异,而不会占用太多额外的内存。

Omdia 的分析师 Brad Shimmin 将 JIT 编译器称为“一件大事”,因为它使 Python 在与 Java 等久负盛名且面向企业的基于 JIT 的语言相比时处于更平等的地位。 “更重要的是,这种 JIT 实现比传统的 JIT 架构带来了性能提升,”他告诉 The New Stack。“与在创建机器代码之前将代码遍历中间语言相比,这可能非常慢,Python 13.3 的实现使用了一种复制和修补方法,不需要在 Python 运行时内运行完整的 JIT。”

Andrew Cornwall,Forrester Research 的分析师,同意 Python 3.13 中两个最重要的运行时更改是实验性的,“因此日常 CPython 用户目前不会看到太大区别,”他告诉 The New Stack。然而,Python 正在为在多个处理器上更快地运行代码奠定基础。

“一旦启用,JIT 编译器应该让 CPython 对于每个人来说都运行得更快,但 Python 现在正在保持谨慎,默认情况下将其关闭,”Cornwall 说。然而,“禁用全局解释器锁的能力可能会更具破坏性,因为它允许 Python 库利用更多核心,如果这些库可以支持多线程。那些开发 C 库的人需要调查禁用 GIL 的影响。但是,对于日常用户来说,这些变化还很遥远——它们目前在单独的 python3.13t 二进制文件中。”

免费线程是关于尝试使用更多核心。然而,“JIT 编译是关于尝试通过使解释器更高效来从单个核心获得更多收益,”Seibert 告诉 The New Stack。“此版本将包含该 JIT 编译器的第一个版本,并且该目标只是让它无形地使一切都更快。”

事实上,Seibert 说,Python 多年来一直专注于速度。“我知道历史上 Python 比其他一些语言更慢,但更容易编程。这个 [JIT 编译器] 某种程度上将它带入了像 C 或 C++ 这样的领域,”他说。

交互式解释器改进

同时,改进的交互式解释器功能包括多行编辑,带有历史记录保存,直接支持 read-eval-print loop (REPL) 特定命令,包括 help、exit 和 quit,默认情况下启用颜色的提示和回溯,交互式帮助浏览(F1 键),历史记录浏览(F2 键)和“粘贴模式”以更轻松地粘贴代码(F3 键)。

“有一个新的交互式解释器,它添加了一些生活质量的东西,比如颜色和能够同时编辑多行 Python 代码——这些东西你可以在 IPython 中完成,但现在它内置在解释器中,”Seibert 说。

Python 的新 交互式 shell,默认情况下可用,基于 PyPy 项目 的代码。

其他关键更改

此外,Python 3.13 具有增量 垃圾收集器 实现,可以减少清理分配内存时的长时间暂停,Cornwall 说。

此外,“平台支持现在包括移动设备(iOSAndroid 都处于第 3 层,这意味着至少有一位核心开发人员参与)。并且 Wasm 支持已从 emscripten 迁移到 WASI,”他说。

更多幕后改进

此外,“有一些已弃用的库——例如,如果您使用的是 cgicrypt,您需要找到替代方案,”Cornwall 告诉 The New Stack。“语言更改不太可能影响大多数用户。以前关于 locals() 的未定义语义现在已定义,但这对于大多数开发人员来说都是小事。在这个版本中,大多数开发人员会注意到新的油漆工作,但不会注意到幕后的重大变化。”

一位注意到幕后变化的开发人员是 Tom TangDistributive 的工程师,PythonMonkey 项目的创建者。Tang 是 PythonMonkey 项目 的核心开发人员,目前正在努力将 Python 3.13 支持引入 PythonMonkey。

API 稳定性:PythonMonkey 示例

Tang 说,他作为一名系统开发人员,深入研究 Python 的底层部分,因此 Python 3.13 中 C API 稳定性的变化值得注意。

在 3.13 版本之前,Python 的 C API 在每个次要版本中都会频繁更改,并且有很多未记录的内部 API 在每个下一个 Python 版本中都被破坏或删除,Tang 告诉 The New Stack。

这给 PythonMonkey 的开发带来了一些麻烦,因为 PythonMonkey 承诺支持多个 Python 版本,这非常复杂。在 Python 3.13 中,CPython 核心维护者采取了 措施来解决 API 不稳定性 问题,只提供稳定的公共 API 供使用。大多数未记录的“私有”API 在 Python 3.13 中被移除,剩下的几个现在已记录并提升为稳定 API。

此举对 Python 扩展开发人员很重要,因为它让您能够使用经过良好记录的 API,并迫使您在处理 Python 的底层部分时真正考虑向前和向后兼容性,Tang 说。

“另一方面,在 PythonMonkey 的情况下,由于我们正在处理 CPython 解释器中非常利基的实现细节,以使 PythonMonkey 尽可能快且高效,隐藏“内部 API”或实现细节可能会阻碍我们进一步优化 PythonMonkey 以实现更快的跨语言运行时,”他说。

此外,“如果有一个更正式的 API 用于访问内部,即使这些 API 成为“不稳定”API 的一部分,对像 PythonMonkey 这样的深度集成产品也会有所帮助,”Tang 说。

全面做好

总的来说,Python 3.13 中的更改“是不错的补充,本身将进一步巩固 Python 在现有用例中的“首选”语言地位,特别是对于数据、AI 和 IT 工程师,”Shimmin 说。“然而,对我来说,这个版本的决定性因素是速度和规模。”

Python 社区对性能和效率的关注当然会解决 Python 目前在性能方面的一些增长烦恼。Python 3.13 中的更新“也将更好地巩固 Python 作为一种在更广泛的用例中‘无所不能,精益求精’的语言的声誉,”Shimmin 说。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-082,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于 Python 3.13 你所需要知道的几点
自20世纪80年代末,Guido Van Rossum在荷兰阿姆斯特丹东部的一个科技园区开始开发Python编程语言,它最初被设计为一种单线程的解释型语言。这到底是什么意思呢?
数据科学工厂
2024/12/30
1030
关于 Python 3.13 你所需要知道的几点
为什么Python这么慢?
答案在很大程度上取决于您正在运行的应用程序的类型。没有一个基准测试是完美的,但是计算机语言基准测试游戏是一个很好的起点。
HuangWeiAI
2019/11/25
1.7K0
为什么Python这么慢?
为什么Python这么慢?
Python语言近年来人气爆棚。它广泛应用于网络开发运营,数据科学,网络开发,以及网络安全问题中。
大数据文摘
2018/08/21
1.2K0
为什么Python这么慢?
Python 最难的问题你猜是什么?
超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心。 未解决的问题 随处都是问题。难度大、耗时多肯定是其中一个问题。仅仅是尝试解决这个问题就会让人惊讶。之前是整个社区的尝试,但现在只是外围的开发人员在努力。对于新手,去尝试解决这样的问题,主要是因为问题难度足够大,解决之后可以获得相当的荣誉。计算机科学中未解决的 P = NP 就是这样的问题。对此如果能给出多项式时间复杂度的答案,那简直就可以改变世界了。Python最困难的问题比证明P = NP要容易一些,不过迄
小小科
2018/05/02
1.3K0
Python 最难的问题你猜是什么?
scikit-learn 1.7.0发布,全方位解析,带你玩转机器学习新高度!
机器学习领域的热门开源库scikit-learn迎来了1.7.0版本的重大更新!这次发布不仅支持最新的Python 3.10至3.13,还引入了实验性支持free-threaded CPython,极大提升了多线程性能表现。作为机器学习开发者和数据科学爱好者,不容错过这次的重磅升级。
福大大架构师每日一题
2025/06/08
980
scikit-learn 1.7.0发布,全方位解析,带你玩转机器学习新高度!
总结 | 尹立博:Python 全局解释器锁与并发 | AI 研习社第 59 期猿桌会
AI 科技评论按:作为排名靠前的最受欢迎和增长最快的编程语言之一,Python 是一种多用途、高级别、面向对象、交互式、解释型和对用户非常友好的编程语言,拥有卓越的可读性和极高的自由度。而为了能利用多核多线程的的优势,同时又要保证线程之间数据完整性和状态同步,Python 官方的、最广泛使用的解释器——CPython 往往会采取最简单的加锁的方式——全局解释器锁(GIL)。
AI科技评论
2018/12/24
8840
提速25%!CPython 3.11 来了
点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 文 | 罗奇奇,出品 | OSC开源社区(ID:oschina2013) 在退休又复出加入微软的 Faster CPython 团队后, Python 之父 Guido van Rossum 在 2021 年 Python 语言峰会上放下狠话,称团队将在 Python 3.11 版本中实现至少提速 1 倍的进展。 而在今年的 Python 语言峰会上,Guido 和团队搭档 Mark Shannon 汇报了最新的进展:对比 3.10
昱良
2022/05/25
1.4K0
提速25%!CPython 3.11 来了
Python之父:明年让Python快2倍
5月中旬刚刚结束的Pycon US 2021上,Python之父Guido van Rossum提出要在未来四年内将CPython速度提升5倍。
量子位
2021/06/17
5800
Python 为什么这么慢?
大家好,我是猫哥。今天分享一篇文章,讨论了拖慢 Python 整体性能的三大原因。在开始正文之前,需要说明一下(免得有人误以为 Python 慢就不值得使用):性能很关键,但并不总是决定因素,语言的选择是系统性的问题,需要多方考虑。
Python猫
2019/06/05
2.3K0
Python 为什么这么慢?
Python 3.12正式发布:性能提升、no-GIL将在3.13提供
新版取消了最初制定 f-strings 时制定的一些限制。经过这些变化,使得 f-strings 更加统一,成为一种可以直接整合到解析器中的正式化语法。这将会为终端用户和库开发者带来较大优势,同时也大大降低用于解析 f-strings 代码的维护成本。
老表
2023/10/08
1K0
Python 3.12正式发布:性能提升、no-GIL将在3.13提供
Python进阶——为什么GIL让多线程变得如此鸡肋?
做 Python 开发时,想必你肯定听过 GIL,它经常被 Python 程序员吐槽,说 Python 的多线程非常鸡肋,因为 GIL 的存在,Python 无法利用多线程提高性能。
_Kaito
2021/03/23
8890
Python进阶——为什么GIL让多线程变得如此鸡肋?
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
「Python 中的 GIL 将不复存在,这是人工智能生态系统领域中的巨大胜利。」PyTorch 核心维护者 Dmytro Dzhulgakov 感慨道。
机器之心
2023/08/08
2840
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
人们对Python在企业级开发中的10大误解
在PayPal的编程文化中存在着大量的语言多元化。除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Braintree的收购也推出了成熟的Ruby社区。 有一种特别的语言,它在eBay和PayPal有很长的历史,在开发者心中的地位也在日渐提高,这种语言就是:Python。 多年来,Python一直得到eBay开发人员的广泛使用和支持。甚至在官方管理层支持以前,技术人员就开始使用Python,并从中受益。多年前,我加入PayPal,并选择Python来编写内部应用程序,但我发
CDA数据分析师
2018/02/05
1.1K0
人们对Python在企业级开发中的10大误解
微软裁撤 Python 之父的嫡系核心团队,CPython 团队没了
近日,微软宣布的这波全球范围内的裁员似乎对构建软件产品的人员造成了最沉重的打击。根据彭博社查阅的华盛顿州政府文件显示,在微软总部所在的美国华盛顿州,软件工程是迄今为止收到裁员通知最多的单一职业类别,在该州约 2000 个被裁岗位中占比超过 40%。
深度学习与Python
2025/05/17
1570
微软裁撤 Python 之父的嫡系核心团队,CPython 团队没了
让Python代码运行更快的方式
Python因其强大、灵活且易于使用等特性,而赢得了声誉。这些优点使其在各种各样的应用程序、工作流程和领域中得到了广泛应用。但是就语言的设计,也就是它天然的解释能力还有它的运行时的动态性而言,Python总是比C或C ++这样的机器本地语言慢一个数量级。
AI科技大本营
2019/05/28
1.2K0
为什么 Python 这么慢?
对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?
sergiojune
2018/12/13
1.6K0
Python学习之认知(一)
​ 编程语⾔主要从以下几个⻆度为进行分类,编译型和解释型、静态语言和动态语⾔、强类型定义语言和弱类型定义语言。
py3study
2020/01/15
7660
python介绍
python是一门优秀的综合语言,python的宗旨是简明,优雅,强大,在人工智能,云计算,金融分析,大数据开发,web开发,自动化运维,测试等方向应用广泛,已是全球第4大最流行的语言
py3study
2018/08/02
8460
Python 3.12 目标:还可以更快!
按照发布计划,Python 3.11.0 将于 2022 年 10 月 24 日发布。
Python猫
2022/10/06
8870
热度碾压 Java、C#、C++的 Python,为什么速度那么慢?
眼下 Python 异常火爆,不论是 DevOps、数据科学、Web 开发还是安全领域,都在用 Python——但是它在速度上却没有任何优势。
CDA数据分析师
2018/08/14
2.3K0
热度碾压 Java、C#、C++的 Python,为什么速度那么慢?
推荐阅读
相关推荐
关于 Python 3.13 你所需要知道的几点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档