Python或IronPython

33
IronPython与python.org上的默认Windows实现相比如何?如果我正在学习Python,使用IronPython是否会学习到一种微妙不同的语言,并且可能缺少哪些库?
另外,有没有什么优点是IronPython具有(不包括.NET IL编译类),这使其成为更有吸引力的选项呢?
8个回答

33

有几个重要的不同之处:

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

14

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

使用IronPython,您可以使用所有 .Net 库,但会损失一些尚未移植到 .Net VM 的“普通” Python 库。

基本上,您应该期望语法和习惯用法是相同的,但是使用 IronPython 编写的脚本如果尝试运行在“常规”Python解释器上是无法运行的。反过来可能更有可能发生,但是在这种情况下也会发现差异。


5

还有http://fepy.sourceforge.net/,它可以通过避免微软许可证问题提供额外的库。 - S.Lott
链接已关闭,评论中的链接也是如此。 - t0b4cc0

2
请查看博客文章IronPython是单向门。它总结了我从在StackOverflow上提问中学到的关于IronPython的一些东西。

2

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


这更多是为了个人的自我提升,虽然我主要在 MS 领域工作,但这并不意味着我应该限制自己的个人发展。 - johnc

2
IronPython的一个优点是,与CPython不同,IronPython不使用全局解释器锁,从而使线程更加有效。在标准Python实现中,线程在每次对象访问时都会获取GIL。这限制了并行执行,尤其是如果您希望充分利用多个CPU时。

2

优点:如果安装了SilverLight,您可以在浏览器中运行IronPython


0

这也取决于您是否希望您的代码在Linux上运行。不确定IronPython是否可以在除Windows平台之外的任何平台上运行。


1
如果它可以编译成IL代码,那么mono应该能够运行它! - Peter
1
它可以运行并且可以在单个运行时环境中使用。 - Ali Afshar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接