PyPy在CPython,Jython和IronPython上提供了什么?

时间:2009-03-06 16:25:49

标签: python interpreter pypy

从我在博客上看到和阅读的内容来看,PyPy是一个非常雄心勃勃的项目。它将为其兄弟姐妹(CPython,Jython和IronPython)带来哪些优势?它是速度,跨平台兼容性(包括移动平台),在没有GIL的情况下使用c扩展的能力,还是更多关于可以做什么的技术练习?

4 个答案:

答案 0 :(得分:38)

PyPy实际上是两个项目:

  • 一个解释器编译器工具链,允许您在RPython(Python的静态子集)中编写解释器,并为JVM,.NET(等)提供独立编译的跨平台解释器
  • RPython中的Python实现

这两个项目允许许多事物。

  • 在Python中维护Python要比在C
  • 中维护它容易得多
  • 从单个代码库中,您可以生成在JVM,.NET和独立版本上运行的Python解释器 - 而不是具有多个稍微不兼容的实现
  • 编译器工具链的一部分包括一个实验性JIT生成器(现在处于第五个版本并且开始工作得非常好) - 目标用于JITed PyPy运行很多比CPython快
  • 尝试基本语言功能要容易得多 - 比如删除GIL,更好的垃圾收集,集成无堆栈等等

因此PyPy真的有很多令人兴奋的理由,它终于开始兑现所有的承诺。

答案 1 :(得分:4)

最重要的功能当然是JIT编译器。在CPython中,文件被编译为字节码(.pyc)或优化的字节码(.pyo),然后进行解释。使用PyPy,它们将被编译为本机代码。 PyPy还包括Stackless Python个补丁,包括令人印象深刻的features(tasklet序列化,轻量级线程等)。

答案 2 :(得分:0)

如果Python得到真正的JIT,我认为它会像其他任何实现一样快。

优点是实现新功能要容易得多。今天可以通过观察图书馆看到这一点。通常,模块首先用Python编写,然后翻译成C。

答案 3 :(得分:0)

  

跨平台兼容性