33

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

或者,IronPython 是否有任何优点(不包括 .NET IL 编译的类)可以使其更具吸引力?

4

8 回答 8

32

有许多重要的区别:

  1. 与其他 .NET 语言的互操作性。例如,您可以使用 IronPython 应用程序中的其他 .NET 库,或使用 C# 应用程序中的 IronPython。随着 .NET 4.0 中对动态类型的更大支持,这种互操作性正在增加。有关这方面的更多详细信息,请参阅PDC 2008 上的 两个演示文稿。
  2. Better concurrency/multi-core support, due to lack of a GIL. (Note that the GIL doesn't inhibit threading on a single-core machine---it only limits performance on multi-core machines.)
  3. Limited ability to consume Python C extensions. The Ironclad project is making significant strides toward improving this---they've nearly gotten Numpy working!
  4. Less cross-platform support; basically, you've got the CLR and Mono. Mono is impressive, though, and runs on many platforms---and they've got an implementation of Silverlight, called Moonlight.
  5. Reports of improved performance, although I have not looked into this carefully.
  6. 功能滞后:由于 CPython 是参考 Python 实现,它具有“最新和最伟大”的 Python 功能,而 IronPython 必然落后。许多人不认为这是一个问题。
于 2009-02-26T14:30:48.447 回答
13

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

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

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

于 2009-02-26T10:47:57.500 回答
5

嗯,它通常更快。

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

这是差异列表。

于 2009-02-26T10:47:34.833 回答
3

请参阅博文IronPython 是一种单向门。它总结了我在 StackOverflow 上提问时学到的关于 IronPython 的一些知识。

于 2009-02-26T14:36:37.247 回答
2

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

于 2009-02-26T10:55:51.257 回答
2

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

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

于 2009-02-26T11:50:53.900 回答
2

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

于 2009-02-26T14:39:43.903 回答
0

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

于 2009-02-26T10:50:26.543 回答