【问题标题】:What are the pros and cons of the various Python implementations?各种 Python 实现的优缺点是什么?
【发布时间】:2010-09-10 07:28:11
【问题描述】:

我对 Python 比较陌生,我一直使用标准的 cpython (v2.5) 实现。

不过,我一直想知道其他实现,尤其是 Jython 和 IronPython。是什么让他们变得更好?是什么让他们变得更糟?还有哪些其他实现方式?

我想我正在寻找的是每个实现的摘要和优缺点列表。

【问题讨论】:

    标签: python


    【解决方案1】:

    这里列出了所有的实现:

    https://wiki.python.org/moin/PythonImplementations

    CPython 是“参考实现”,由 Guido 和核心开发人员开发。

    【讨论】:

    • 该链接现在(2012 年 8 月)给出 404。
    【解决方案2】:

    至少对某些人来说,Jython 的另一个好处是it lacks the GIL(全局解释器锁)并使用 Java 的本机线程。这意味着您可以并行运行纯 Python 代码,这是 GIL 无法做到的。

    【讨论】:

      【解决方案3】:

      PyPy 是用 RPython 编写的 Python 实现,它是 Python 的子集。

      RPython 可以翻译成在 VM 上运行,或者与标准 Python 不同,RPython 可以静态编译。

      【讨论】:

        【解决方案4】:

        IronPython 和 Jython 使用 .NET 或 Java 的运行时环境,随之而来的是即时编译和不同于原始 CPython 的垃圾收集器。由于 JIT,它们可能也比 CPython 更快,但我不确定。

        使用 Jython 或 IronPython 的一个缺点是您不能使用本机 C 模块,它们只能在 CPython 中使用。

        【讨论】:

          【解决方案5】:

          JythonIronPython 如果您迫切需要与在不同平台上编写的现有库进行交互,例如如果您有 100,000 行 Java 并且您只是想写一个 20 行的 Python 脚本。在我看来,对其他任何东西都不是特别有用,因为由于社区的惰性,它们总是落后于 CPython 的几个版本。

          Stackless 很有趣,因为它支持绿色线程、延续等。有点像 Erlang-lite。

          PyPy 是一种实验性解释器/编译器,有朝一日可能会取代 CPython,但现在更多的是新想法的试验台。

          【讨论】:

          • Stackless 的一些魔法(绿色线程等)可用于由 PyPy 开发的 py.magic 库中的 CPython 实现。据我所知,stackless 开发有些平静,Erlang-lite 功能的大部分工作现在都进入了 PyPy。
          【解决方案6】:

          优点:访问可用于 JVM 或 CLR 的库。

          缺点:两者在功能方面都自然落后于 CPython。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-06
            • 2010-10-29
            • 2011-01-09
            • 2023-03-18
            • 2010-10-02
            • 2011-03-17
            • 1970-01-01
            相关资源
            最近更新 更多