访问量: 411 次浏览

Python 是最流行的编程语言之一,
它需要解释器来执行 Python 代码定义的指令。
与直接编译成机器代码的其他语言相比,
由解释器负责读取 Python 代码并将其指令转换为 CPU 执行相关操作。
本文将与大家共同探讨2022 年最流行的 6 款 Python 解释器。

在谈论 Python 解释器时,
通常指 /usr/bin/python 二进制文件,
可以执行 .py 文件。
然而,解释器只是一项任务。
在 CPU 上真正执行一行 Python 代码之前,
涉及到以下四个步骤:
如上述所见,在采取任何实际行动之前需要执行很多步骤,
因此仔细研究不同的解释器十分有意义。

CPython 是 Python 的参考实现,
也是许多系统的默认实现。
顾名思义,CPython 是用 C 编写的。
可以用 C 编写扩展,
从而使基于 C 的 widley 库代码对 Python 可用。
CPython 可用于多种平台,
包括 ARM、iOS 和 RISC。
然而,作为该语言的参考实现,CPython
经过了仔细优化,
并不注重速度。

Pyston 是 CPython 解释器的一个分支,
它实现了性能优化。
该项目将自己描述为标准 CPython 解释器的替代品,
用于大型、真实世界的应用程序,
加速潜力高达30%。
由于缺乏兼容的二进制程序包,
Pyston 程序包必须在下载过程中重新编译。

PyPy 是一个针对 Python 的实时(JIT)编译器,
用 RPython 编写。
RPython 是 Python 的一个静态类型化子集。
与 CPython 解释器不同,
PyPy 编译成可由 CPU 直接执行的机器码。
PyPy 是 Python 开发人员的天地,
可在其更轻松地试验一些新功能。
与 CPython相比,PyPy 的实现更快。
由于 JIT 编译器的性质,
只有运行了很长时间的应用程序才能从缓存中受益。
PyPy 可以作为 CPython 的替代品。
不过,这也有一个缺点。
C 扩展模块大多受支持,
但它们的运行速度比 Python 模块慢。
PyPy 扩展模块是用 Python (而不是 C)编写的,
因此 JIT 编译器能够对它们进行优化。
只要应用程序不依赖于不兼容的模块,
PyPy 就是 CPython 的绝佳替代品。
在项目网站上有一个专门的页面,
详细描述了CPython的区别,
更多详情请参阅:PyPy和CPython之间的区别。
顾名思义,RustPython 是一种用 Rust 编写的 Python 解释器。
尽管 Rust 编程语言很新,
但它已经越来越受欢迎,
是 C 和 C++ 的继任者。
默认情况下,RustPython 的行为类似于 CPython 的解释器,
还有一个 JIT 编译器,
可以选择启用该编译器。
另一个很好的特性是,
Rust 工具链允许直接编译为 WebAssembly,
允许完全在浏览器中运行解释器,
可在 rustpython.githorb.com/demo 上找到它的演示。
Stackless Python 将自己描述为 Python 编程语言的增强版本。
该项目基本上是 CPython 解释器的一个分支,
它为语言添加了微线程、通道和调度器。
微线程允许将代码组织到微线程中,
从而可以并行运行代码。
这种方法类似于使用 greenlet 模块的绿色通道。
通道可用于微线程之间的双向通信。
Stackless Python 的一个著名用户是 MMORPG Eve Online。

如果以微控制器为目标,
那么 MicroPython 是您的令一种选择。
这是一个精简的实现,
只需要 16kB 的 RAM 和 256kB 的空间。
由于它所针对的嵌入式环境,
MicroPython 的标准库只是 CPython 扩展 STL 的一个子集。
无论是为了开发和测试,
还是作为一个轻量级的替代方案,
MicroPython 也可以在普通的 x86 和 x64 机器上运行。
MicroPython 可用于 Linux、Windows 以及许多微控制器。
从设计上来说,Python 是一种固有的慢语言。
根据任务的不同,
解释器之间的表现存在显著差异。
如想了解哪种解释器是某项任务的最佳选择,
请参阅 pybenchmarks.org 。
使用解释器的另一种选择是将 Python 二进制代码直接编译为机器代码。
例如,Nuitka 就是这样一个项目,
它可以将 Python 代码编译成 C 代码,
并将 C 代码编译成机器代码,
再使用普通 C 编译器将 C 代码编译为机器代码。
对于快速原型化和任务自动化来说,
Python 是一种很棒的语言。
此外,它很容易学习,非常适合初学者。
如果您通常使用 CPython,
那么看看您的代码在另一个解释器上的行为可能会很有趣。
如果您使用 Fedora,
可以很容易地测试其他一些解释器,
因为管理器已经提供了正确的二进制文件。
有关更多信息,请访问 fedora.developer.org。