繁体   English   中英

Python或IronPython

[英]Python or IronPython

IronPython如何从python.org堆叠到Python的默认Windows实现? 如果我正在学习Python,我是否会使用IronPython学习一种微妙的不同语言,以及我将不使用哪些库?

或者,IronPython的任何专业人士(不包括.NET IL编译类)是否会使其更具吸引力?

有许多重要的区别:

  1. 与其他.NET语言的互操作性。 例如,您可以使用IronPython应用程序中的其他.NET库,或者使用C#应用程序中的IronPython。 随着.NET 4.0中对动态类型的更大支持,这种互操作性正在增加。 有关此很多的细节,看到 2个演讲在2008年PDC。
  2. 由于缺少GIL,更好的并发/多核支持。 (请注意,GIL不会抑制单核机器上的线程化 - 它只会限制多核机器的性能。)
  3. 使用Python C扩展的能力有限。 Ironclad项目正在朝着改善这一目标迈进一大步 - 他们几乎让Numpy工作了!
  4. 减少跨平台支持; 基本上,你有CLR和Mono 然而Mono令人印象深刻,并在许多平台上运行---他们已经实现了Silverlight,称为Moonlight
  5. 虽然我没有仔细研究过,但有关性能改善的报告。
  6. 功能滞后:由于CPython是参考Python实现,它具有“最新和最好”的Python功能,而IronPython必然落后。 很多人都没有发现这是一个问题。

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

使用IronPython,您可以使用所有.Net库,但是我认为还有一些“普通”python库没有移植到.Net VM。

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

嗯,它通常更快。

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

这是一个差异列表。

查看博客帖子IronPython是一个单向门 它通过在StackOverflow上提问来总结我从IronPython中学到的一些东西。

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

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

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

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

这还取决于您是否希望您的代码在Linux上运行。 Dunno如果IronPython可以在Windows平台上运行任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM