【问题标题】:Python or IronPythonPython 或 IronPython
【发布时间】:2009-02-26 10:41:16
【问题描述】:

IronPython 如何与 python.org 的 Python 默认 Windows 实现相叠加?如果我正在学习 Python,我会在 IronPython 中学习一种微妙的不同语言吗?没有哪些库我会做什么?

IronPython 是否有任何优点(不包括 .NET IL 编译的类)可以使其成为更有吸引力的选择?

【问题讨论】:

    标签: python ironpython cpython


    【解决方案1】:

    有许多重要的区别:

    1. 与其他 .NET 语言的互操作性。例如,您可以使用 IronPython 应用程序中的其他 .NET 库,或使用 C# 应用程序中的 IronPython。随着 .NET 4.0 中对动态类型的更大支持,这种互操作性正在增加。有关这方面的更多详细信息,请参阅 these two 在 PDC 2008 上的演讲。
    2. 更好的并发/多核支持,由于缺少 GIL。 (请注意,GIL 不会禁止单核机器上的线程——它只会限制多核机器上的性能。)
    3. 使用 Python C 扩展的能力有限。 Ironclad 项目在改进这一点方面取得了重大进展——他们几乎让 Numpy 工作了!
    4. 较少的跨平台支持;基本上,您已经获得了 CLR 和 Mono。不过,Mono 令人印象深刻,并且可以在许多平台上运行——他们有一个 Silverlight 的实现,称为 Moonlight
    5. 关于性能改进的报告,尽管我没有仔细研究过。
    6. 功能滞后:由于 CPython 是参考 Python 实现,它具有“最新和最出色”的 Python 功能,而 IronPython 必然落后。许多人认为这不是问题。

    【讨论】:

      【解决方案2】:

      编写代码的方式存在一些细微差别,但最大的区别在于可用的库。

      使用 IronPython,您可以获得所有可用的 .Net 库,但代价是一些“普通”python 库尚未移植到我认为的 .Net VM。

      基本上,您应该期望语法和习语相同,但是如果您尝试将 IronPython 编写的脚本提供给“常规”Python 解释器,则它不会运行。反过来可能更有可能,但我认为你也会发现差异。

      【讨论】:

        【解决方案3】:

        嗯,它通常更快。

        不能使用模块,只有库的一个子集。

        Here's a list of differences.

        【讨论】:

        • 还有fepy.sourceforge.net,它可以通过避免微软许可混乱来提供额外的库。
        • 链接失效了,评论里的链接也是
        【解决方案4】:

        请参阅博文IronPython is a one-way gate。它总结了我在 StackOverflow 上提问时学到的关于 IronPython 的一些知识。

        【讨论】:

          【解决方案5】:

          Python 是 Python,唯一的区别是 IronPython 被设计为在 CLR (.NET Framework) 上运行,因此可以互操作和使用以其他 .NET 语言编写的 .NET 程序集。因此,如果您的平台是 Windows,并且您还使用 .NET,或者您的公司使用了,那么应该考虑 IronPython。

          【讨论】:

          • 这更多是为了个人的熏陶,我主要在MS领域工作,但这并不一定意味着我应该限制我自己的个人发展。
          【解决方案6】:

          IronPython 的优点之一是,与 CPython 不同,IronPython 不使用全局解释器锁,从而使线程更有效。

          在标准 Python 实现中,线程在每个对象访问时获取 GIL。这会限制并行执行,尤其是在您希望充分利用多个 CPU 时。

          【讨论】:

            【解决方案7】:

            专业人士:如果安装了 SilverLight,您可以运行 IronPython in a browser

            【讨论】:

              【解决方案8】:

              这还取决于您是否希望您的代码在 Linux 上运行。不知道 IronPython 是否可以在 Windows 平台以外的任何平台上运行。

              【讨论】:

              • 如果它编译为 IL 则 mono 应该能够运行它!
              • 它运行并且可用于单声道。
              猜你喜欢
              • 2013-08-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-30
              相关资源
              最近更新 更多