【发布时间】:2010-09-10 07:28:11
【问题描述】:
我对 Python 比较陌生,我一直使用标准的 cpython (v2.5) 实现。
不过,我一直想知道其他实现,尤其是 Jython 和 IronPython。是什么让他们变得更好?是什么让他们变得更糟?还有哪些其他实现方式?
我想我正在寻找的是每个实现的摘要和优缺点列表。
【问题讨论】:
标签: python
我对 Python 比较陌生,我一直使用标准的 cpython (v2.5) 实现。
不过,我一直想知道其他实现,尤其是 Jython 和 IronPython。是什么让他们变得更好?是什么让他们变得更糟?还有哪些其他实现方式?
我想我正在寻找的是每个实现的摘要和优缺点列表。
【问题讨论】:
标签: python
【讨论】:
至少对某些人来说,Jython 的另一个好处是it lacks the GIL(全局解释器锁)并使用 Java 的本机线程。这意味着您可以并行运行纯 Python 代码,这是 GIL 无法做到的。
【讨论】:
PyPy 是用 RPython 编写的 Python 实现,它是 Python 的子集。
RPython 可以翻译成在 VM 上运行,或者与标准 Python 不同,RPython 可以静态编译。
【讨论】:
IronPython 和 Jython 使用 .NET 或 Java 的运行时环境,随之而来的是即时编译和不同于原始 CPython 的垃圾收集器。由于 JIT,它们可能也比 CPython 更快,但我不确定。
使用 Jython 或 IronPython 的一个缺点是您不能使用本机 C 模块,它们只能在 CPython 中使用。
【讨论】:
Jython 和 IronPython 如果您迫切需要与在不同平台上编写的现有库进行交互,例如如果您有 100,000 行 Java 并且您只是想写一个 20 行的 Python 脚本。在我看来,对其他任何东西都不是特别有用,因为由于社区的惰性,它们总是落后于 CPython 的几个版本。
Stackless 很有趣,因为它支持绿色线程、延续等。有点像 Erlang-lite。
PyPy 是一种实验性解释器/编译器,有朝一日可能会取代 CPython,但现在更多的是新想法的试验台。
【讨论】:
优点:访问可用于 JVM 或 CLR 的库。
缺点:两者在功能方面都自然落后于 CPython。
【讨论】: