各种Python实现的优缺点是什么?
我对Python比较陌生,而且我一直使用标准的cpython(v2.5)实现。
我一直在想其他实现,特别是Jython和IronPython。是什么使它们更好?是什么使它们更糟?还有哪些其他实现?
我想我正在寻找的是每种实现的优缺点的摘要和列表。
解决方案
回答
优点:访问可用于JVM或者CLR的库。
缺点:就功能而言,两者自然都落后于CPython。
回答
如果我们最需要与在不同平台上编写的现有库进行交互,例如,如果我们有100,000行Java,而我们只想编写20行Python脚本,则Jython和IronPython很有用。在我看来,它对其他任何事情都不是特别有用,因为由于社区惯性,它们永远比CPython落后几个版本。
Stackless非常有趣,因为它支持绿色线程,连续性等。这是一种Erlang-lite。
PyPy是一个实验性的解释器/编译器,有一天可能会取代CPython,但目前更多地是新思想的测试平台。
回答
此处列出了所有实现:
https://wiki.python.org/moin/PythonImplementations
CPython是Guido和核心开发人员开发的"参考实现"。
回答
IronPython和Jython使用.NET或者Java的运行时环境,并附带了Just In Time编译和与原始CPython不同的垃圾收集器。多亏了JIT,它们可能也比CPython快,但是我不确定。
使用Jython或者IronPython的缺点是我们不能使用本机C模块,它们只能在CPython中使用。
回答
PyPy是用RPython编写的Python实现,其中是Python子集。
RPython可以转换为在VM上运行,或者与标准Python不同,RPython可以静态编译。
回答
对于Jython而言,至少对于某些人而言,另一个好处是它缺少GIL(全局解释器锁)并且使用Java的本机线程。这意味着我们可以并行运行纯Python代码,而GIL则无法实现。