提问者:小点点

为什么标准Python中没有包含PyPy?


我在看PyPy,我只是想知道为什么它没有被主流Python发行版采用。JIT编译和更低的内存占用不会大大提高所有Python代码的速度吗?

简而言之,PyPy的主要缺点是什么导致它仍然是一个独立的项目?


共1个答案

匿名用户

PyPy不是CPython的一个分支,所以它永远不能直接合并到CPython中。

理论上,Python社区可以普遍采用PyPy,PyPy可以作为参考实现,而CPython可以停止使用。然而,PyPy也有自己的弱点:

  • CPython很容易与用C编写的Python模块集成,这是Python应用程序处理CPU密集型任务的传统方式(例如,请参见SciPy项目)。
  • PyPy JIT编译步骤本身需要花费CPU时间--只有通过重复运行编译后的代码,它才会变得更快。这意味着启动时间可能会更长,因此PyPy在运行粘合代码或琐碎脚本时不一定那么高效。
  • PyPy和CPython行为在所有方面都不相同,尤其是在“实现细节”方面(不是由语言指定的行为,但在实际层面上仍然很重要)。
  • CPython运行在比PyPy更多的体系结构上,并且已经成功地适应了在嵌入式体系结构中运行的方式,而这些方式对PyPy来说可能是不切实际的。
  • CPython用于内存管理的引用计数方案可以说比PyPy的各种GC系统具有更可预测的性能影响,尽管这并不一定适用于所有的“纯GC”策略。
  • PyPy尚未完全支持Python 3.x,尽管Python 3.x是一个活动的工作项。