Python——CPython 与 PyPy

Python——CPython 与 PyPy

最常用的参考实现是 Python,可能是 CPython。它是用 C 和 Python 编写的,包括一个解释器和一个编译器(用于 Python 字节码)。 CPython 没有内置的 JIT(即时编译)(这意味着它不会将代码编译为特定 CPU 的机器指令)。

另一方面,PyPy 是 Python 的另一种支持 JIT 的实现(因此速度更快——请看下面屏幕截图中的示例)。根据 PyPy 团队所做的不同基准测试,它似乎比 CPython 快 4.7 倍( https://speed.pypy.org/ )。

它的疯狂之处在于您不需要重写代码。唯一需要做的就是用 PyPy 替换 CPython。重要的是要知道 PyPy 支持“Python Echosystems”中的大多数工具。例如 pip(包管理器)和 virtualenv(Python 的虚拟环境)。甚至大多数 Python 包都受支持——但不是全部(你可以在以下链接中看到 PyPy 支持的包列表—— http://packages.pypy.org/ )。

此外,PyPy 类似于 HotSpot(Java 虚拟机 JIT 引擎)的方式。它使用来自 Python 代码执行的动态信息来识别诸如正在使用的对象类型之类的东西(并基于此优化编译的代码)。假设我们有一个只使用两种类型对象的函数,那么 PyPy 可以创建只处理它们的机器代码。

此外,您应该记住,PyPy 不是“Python 编译器”并且不支持 AOT(head of time 编译)。如果您想了解有关“Python 编译器”的更多信息,请查看“Numba”( https://numba.pydata.org/ )。

最后,还有基于其网站的 Pyjion 是“A drop-in JIT Compiler for Python 3.10”( https://www.trypyjion.com/ )。我们将在单独的文章中介绍它。下次见;-)。

你可以在推特上关注我——@boutnaru ( https://twitter.com/boutnaru )。

Time benchmark between CPython and PyPy on the same computation

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38086/15482011

posted @ 2022-09-20 11:16  哈哈哈来了啊啊啊  阅读(412)  评论(0编辑  收藏  举报