Python 3.11 ,即将变得更快!

2022-05-27 23:13:30 浏览数 (1)

这是「进击的Coder」的第 632 篇技术分享

来源:CSDN

阅读本文大概需要 5 分钟。

作为一门异常受欢迎的编程语言,Python 的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python 一直被诟病的就是它运行速度太慢。

在去年的 PyCon US 2021 大会上,Python 之父 Guido van Rossum 曾表示:要在 2022 年的 Python 3.11 中,将 Python 速度提高 2 倍,4 年内,速度提升 5 倍,以解决 Python 与 C 等其他编程语言相比在速度上的关键缺点。

如今,速度太慢的情况在 Python 3.11 中即将改变。在今年晚些时候发布稳定版之前,目前正处于其预览版(版本 3.11.0b1)的第一个测试阶段。

CPython 3.11 已比 3.10 提速 1.25 倍

在近期的 PyCon US 2022 会议上,Core Python(CPython)开发者 Mark Shannon 分享了关于加速 Python 项目的细节,此外,开发者还展示了在浏览器中运行 Python 代码这一目标的进展。

去年,微软资助了 Python 软件基金会(PSF)的一个项目——“Shannon Plan”,该项目由 Python 创造者 Guido van Rossum 和 Mark Shannon 领导,承诺在今年的 Python 3.11 中将其速度提高 2 倍。其愿景是促使 Python 向 C 语言的性能发展。

微软在 2020 年聘请了 van Rossum,并让他自由选择任何项目。在去年的 PyCon US 2021 会议上,他称自己 "选择回到我的根源",并将致力于解决 Python 著名的性能不足问题

性能也许并不是 Python 的首要任务,因为机器学习和数据科学的采用得益于 TensorFlow、NumPy、Pandas 以及更多的平台,如 AWS 的 Boto3 SDK for Python。这些平台每月被下载数千万次,并在通常不受硬件限制的环境中使用。

Faster CPython项目(GitHub地址:https://github.com/faster-cpython/ideas/blob/main/main-vs-310.rst)提供了一些关于 CPython 3.11 在过去一年的性能更新。在 PyCon US 2022 会议之前,该项目公布了更多的结果:在几十个性能指标上对 3.11 测试预览版和 3.10 进行了比较,显示 3.11.0b1 总体上比 3.10 快 1.25 倍

新的字节码解释器使错误处理更高效

Shannon 对该项目提高 Python 性能的能力持现实态度,但他相信这些改进可以将 Python 的可行用途扩展到更多的虚拟机。他去年在 Python 增强提案(PEP)659 中写道:“Python 被广泛认为是缓慢的。

虽然 Python 永远达不到 C、Fortran 甚至 Java 等低级语言的性能,但我们希望它能与脚本语言的快速实现相媲美,如 Javascript 的 V8 或 Lua 的 LuaJIT。具体来说,我们希望通过 CPython 实现这些性能目标,使所有 Python 用户受益,包括那些无法使用 PyPy 或其他替代性虚拟机的用户。”

在 PEP 659 中详述的关键方法是:“专门化的、自适应的解释器,但它在一个非常小的区域内积极地专门化代码,并能够迅速和低成本地适应错误的专门化。

如上所述,虚拟机的优化是 "昂贵的",往往需要很长的 "预热 "时间。为了避免这种时间开销,虚拟机应该推测“即使在一个函数执行几次后,专门化也是合理的”。所以,解释器需要持续地且非常低廉地进行优化和去优化。

这应该会产生一个更快的 CPython 解释器,它可以在程序执行过程中跟踪单个字节码。据 Python 软件基金会(PSF)称,新解释器的工作几乎已经完成,但仍需要完成循环和二进制操作的动态专门化。

此外,3.11 的内存消耗与 3.10 相比没有变化。

CPython JIT 编译器即将实现

关于 Python 性能的即时(JIT)编译器问题,根据 Python 软件基金会(PSF)对该事件的报道,Shannon 认为这不是一个优先事项,可能最早也要到 Python 3.13 才能实现。

此外,用于数据科学的 Anaconda Python 发行版的制造商 Anaconda,正在支持 Pyston 项目,该项目是 Python 的一个实现,承诺比 Python 有速度上的提高。

Anaconda 在加速 Python 方面较早的努力之一是 Numba 项目,这是一个基于 LLVM 的 CPython JIT 编译器,它可以加速在 CPU 或 GPU 上运行的 Python 数值函数,但不能优化整个程序,也不能解决更广泛的 Python 用例。另一个是 PyPy,它是 CPython 的一个实现,带有JIT编译器以获得更快的性能。

根据Faster CPython项目的实施计划(GitHub地址:https://github.com/markshannon/faster-cpython/blob/master/plan.md),CPython 3.12 可能会获得一个 "用于小区域的简单 JIT 编译器",在运行时使用相对简单、快速的编译器编译小区域的专门代码;而 CPython 3.13 将扩展编译区域,增强编译器以生成卓越的机器代码

最后,对于以上 Faster CPython 项目加速 Python 的做法,你有什么看法?欢迎在评论区留言

参考链接:

https://www.zdnet.com/article/programming-languages-python-is-slow-but-its-about-to-get-faster/

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

扫码购买

好文和朋友一起看~

0 人点赞