Python很慢,但它即将变得更快

因为它易于学习、用途广泛,并且拥有数千个用于数据科学的有用库。但它不是快速的一件事。

这将在 Python 3.11 中发生变化,目前处于其预览版(版本 3.11.0b1)的第一个 beta 阶段,在今年晚些时候稳定发布之前。Core Python (CPython) 开发人员 Mark Shannon 在 PyCon 2022 会议上分享了有关使 Python 更快的项目的详细信息,开发人员还展示了在浏览器中运行 Python 代码目标的进展。

去年,微软资助了 Python 软件基金会 (PSF) 的一个项目,该项目由 Python 的创建者 Guido van Rossum 和 Shannon 领导,目的是让 Python 的速度是当前稳定的 3.10 系列的两倍。愿景是将 Python 推向 C 的性能。

微软在 2020 年聘请了 van Rossum, 让他可以自由选择任何项目。在去年的 PyCon 2021 大会上,他说他“选择回归本源”,并将致力于解决 Python 著名的性能不足问题。

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

Faster CPython 项目在过去一年中 提供了有关 CPython 3.11 性能的一些更新。在 PyCon 2022 之前,该项目发布了更多结果,将 3.11 测试版预览版与 3.10在数十个性能指标上进行了比较,表明 3.11 总体上比 3.10 快 1.25 倍。

Shannon 对该项目提高 Python 性能的能力持现实态度,但相信这些改进可以将 Python 的可行用途扩展到更多虚拟机。

“Python 被广泛认为是缓慢的。虽然 Python 永远无法达到 C、Fortran 甚至 Java 等低级语言的性能,但我们希望它能够与脚本语言的快速实现竞争,例如用于 Javascript 的 V8 或用于 luajit 的lua,”他 去年在 Python Enhancement Proposal(Python 增强提案) 659中写道。 

“具体来说,我们希望通过 CPython 实现这些性能目标,以使所有 Python 用户受益,包括那些无法使用 PyPy 或其他替代虚拟机的用户。” 

PEP 659 中详述的关键方法是“专门化的自适应解释器,它积极地专门化代码,但范围很小,并且能够以低成本快速适应mis专门化。”

如前所述,VM 的优化是“昂贵的”,通常需要很长的“预热”时间。为了避免这种时间开销,VM 应该“推测即使在执行几次函数之后也可以证明特化是合理的”,因此解释器需要以非常便宜的方式持续优化和反优化。

这应该会产生一个更快的 CPython 解释器,它可以在程序执行期间跟踪单个字节码。据 PSF 称,新解释器的工作几乎完成,但仍需要完成循环和二进制操作的动态特化。

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

根据 Python 软件基金会对该事件的报道,关于用于 Python 性能的即时 (JIT) 编译器问题,Shannon 表示这不是优先事项,并且可能要到 Python 3.13 才会出现。

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

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

根据 Faster Python 实施计划,CPython 3.12 可能会获得一个“用于小区域的简单 JIT 编译器”,用于编译专门代码的小区域,而 3.13 将增强编译器以扩展编译区域。

【python学习】
学Python的伙伴,欢迎加入新的交流【君羊】:1020465983
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

你可能感兴趣的