告别缓慢!Python 未来四年将提速5倍?

时间:2022-05-24 17:36来源:未知 作者:中博IT教育

作为一门异常受欢迎的编程语言,Python 的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python 一直被诟病的就是它运行速度太慢。 在去年
作为一门异常受欢迎的编程语言,Python 的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python 一直被诟病的就是它运行速度太慢。
 
在去年的 PyCon US 2021 大会上,Python 之父曾表示:要在 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地址:ideas/main-vs-310.rst at main · faster-cpython/ideas · GitHub)提供了一些关于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 项目的实施计划,CPython 3.12 可能会获得一个 "用于小区域的简单 JIT 编译器",在运行时使用相对简单、快速的编译器编译小区域的专门代码;而 CPython 3.13 将扩展编译区域,增强编译器以生成卓越的机器代码。
(责任编辑:中博IT教育)

苏公网安备 32030302000649号