Python还是IronPython

Python还是IronPython,python,ironpython,cpython,Python,Ironpython,Cpython,IronPython如何从Python.org升级到默认的Windows Python实现?如果我在学习Python,我会用IronPython学习一种微妙的不同语言吗?如果没有这些库,我会做什么 或者,IronPython(不包括.NET IL编译类)有什么优点可以让它成为一个更具吸引力的选项吗?嗯,它通常更快 无法使用模块,并且只有库的子集 在编写代码的方式上有一些细微的差别,但最大的差别在于可用的库 有了IronPython,您就拥有了所有可用的.Net库,但我认为这是以牺牲一些尚未移植到

IronPython如何从Python.org升级到默认的Windows Python实现?如果我在学习Python,我会用IronPython学习一种微妙的不同语言吗?如果没有这些库,我会做什么


或者,IronPython(不包括.NET IL编译类)有什么优点可以让它成为一个更具吸引力的选项吗?

嗯,它通常更快

无法使用模块,并且只有库的子集


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

有了IronPython,您就拥有了所有可用的.Net库,但我认为这是以牺牲一些尚未移植到.NETVM的“普通”python库为代价的


基本上,您应该期望语法和习惯用法是相同的,但是如果您尝试将为IronPython编写的脚本提供给“常规”Python解释器,它将无法运行。另一种方法可能更可行,但我认为你也会发现不同之处。

这也取决于你是否希望你的代码在Linux上工作。不知道IronPython是否能在windows平台以外的任何平台上工作。

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

< P>一个IrPython的优点是,不像CPython,IrPython不使用全局解释器锁,从而使线程更有效。p>
在标准的Python实现中,线程在每个对象访问时获取GIL。这限制了并行执行,特别是当您希望充分利用多个CPU时,这一点尤为重要。

有许多重要的区别:

  • 与其他.NET语言的互操作性。例如,您可以从IronPython应用程序中使用其他.NET库,或者从C#应用程序中使用IronPython。随着.NET4.0对动态类型的更大支持,这种互操作性正在增强。有关这方面的详细信息,请参阅PDC 2008上的演示
  • 由于缺少GIL,因此具有更好的并发性/多核支持。(请注意,GIL并不禁止单核机器上的线程——它只限制多核机器上的性能。)
  • 使用Python C扩展的能力有限。该项目在改善这一点上取得了重大进展——他们几乎开始工作了
  • 跨平台支持较少;基本上,你有CLR和。不过,Mono给人留下了深刻的印象,它可以在许多平台上运行——他们已经实现了Silverlight,名为
  • 关于性能改进的报告,尽管我没有仔细研究
  • 特性滞后:因为CPython是参考Python实现,所以它具有“最新和最好的”Python特性,而IronPython必然落后。许多人并不认为这是一个问题

  • 请参阅博客文章。它总结了我从StackOverflow问题中学到的关于IronPython的一些东西。

    Pro:如果安装了SilverLight,您就可以运行。

    还有一些可以通过避免Microsoft授权混乱来提供附加库的工具。链接已关闭,注释中的链接如果它确实编译为IL,那么mono应该可以运行它!它运行并可用于mono。这更多是为了个人熏陶,我主要在MS空间工作,但这并不一定意味着我应该限制自己的个人发展。