gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:23:35 27 4
gpt4 key购买 nike

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

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

最佳答案

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,尽管这是一个活跃的工作项。

PyPy 是一个很棒的项目,但 CPU 密集型任务的运行时速度并不是一切,而且在许多应用程序中它是最不关心的问题。例如,Django 可以在 PyPy 上运行,这使得模板更快,但 CPython 的数据库驱动程序比 PyPy 的快;最后,哪种实现更有效取决于给定应用程序的瓶颈所在。

另一个例子:你会认为 PyPy 非常适合游戏,但大多数像 PyPy 中使用的 GC 策略会导致明显的抖动。对于 CPython,大部分 CPU 密集型游戏内容被卸载到 PyGame 库,PyPy 无法利用它,因为 PyGame 主要是作为 C 扩展实现的(尽管参见:pygame-cffi)。我仍然认为 PyPy 可以成为一个很棒的游戏平台,但我从未见过它被实际使用过。

PyPy 和 CPython 对基本设计问题有完全不同的方法并做出不同的权衡,因此在每种情况下,任何一种都不比另一种“更好”。

关于python - 为什么 PyPy 没有包含在标准 Python 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com