与 CPython、Jython 和 IronPython 相比,PyPy 能提供什么?
-
03-07-2019 - |
题
从我在博客上看到和读到的内容来看,PyPy 是一个非常雄心勃勃的项目。与它的兄弟姐妹(CPython、Jython 和 IronPython)相比,它会带来哪些优势?是速度、跨平台兼容性(包括移动平台)、在没有 GIL 的情况下使用 c 扩展的能力,还是这更多的是关于可以做什么的技术练习?
解决方案
PyPy 实际上是两个项目:
- 解释器编译器工具链允许您用 RPython(Python 的静态子集)编写解释器,并为 JVM、.NET(等)独立编译跨平台解释器
- RPython 中 Python 的实现
这两个项目允许 许多 事物。
- 在Python中维护Python比在C中维护Python容易得多
- 从单个代码库中,您可以生成在 JVM、.NET 和独立平台上运行的 Python 解释器 - 而不是使用多个稍微不兼容的实现
- 编译器工具链的一部分包括一个实验性 JIT 生成器(现在是第五个版本,并且开始工作得很好) - 目标 用于运行 JITed PyPy 很多 比 CPython 更快
- 尝试基本的语言特性要容易得多——比如删除 GIL、更好的垃圾回收、集成 stackless 等等
因此,PyPy 确实有很多令人兴奋的理由,而且它终于开始兑现其所有承诺。
其他提示
最重要的功能当然是JIT编译器。在CPython中,文件被编译为字节码( .pyc
)或优化的字节码( .pyo
),然后进行解释。使用PyPy,它们将被编译为本机代码。 PyPy还包括 Stackless Python 补丁,包括令人印象深刻的功能(tasklet序列化,轻量级线程等)
如果Python获得真正的 JIT ,我认为它会和任何其他实施一样快。
优点是实现新功能要容易得多。今天可以通过观察图书馆看到这一点。通常,模块首先用Python编写,然后翻译成C。
跨平台兼容性
是
不隶属于 StackOverflow