2009-02-26 40 views
28

IronPython如何從python.org堆疊到Python的默認Windows實現?如果我正在學習Python,我會不會與IronPython學習一種微妙的不同語言,以及我沒有學習什麼庫?Python或IronPython

有沒有,或者,任何專業人士IronPython(不包括.NET IL編譯類),這將使它更具吸引力的選擇?

回答

28

有一些重要的區別:

  1. 互操作性其他.NET語言。例如,您可以使用IronPython應用程序中的其他.NET庫,或者從C#應用程序使用IronPython。隨着.NET 4.0中動態類型的更大支持的發展,這種互操作性不斷增加。有關詳細信息,請參閱thesetwo在PDC 2008上的演示文稿。
  2. 由於缺少GIL,因此具有更好的併發性/多核支持。 (請注意,GIL不會禁止在單核機器上進行線程化,它只會限制多核機器上的性能。)
  3. 限制使用Python C擴展的能力。 Ironclad項目正在朝着改善這一方向邁出重大步伐---他們幾乎得到Numpy的工作!
  4. 減少跨平臺支持;基本上,你有CLR和Mono。但Mono令人印象深刻,並且可以在很多平臺上運行---而且他們已經實現了Silverlight,名爲Moonlight
  5. 改善表現的報告,雖然我沒有仔細研究過。
  6. 功能滯後:由於CPython是參考Python實現,它具有「最新和最好」的Python功能,而IronPython必然滯後。許多人不認爲這是一個問題。
6

嗯,它通常更快。

不能使用模塊,只有庫的一個子集。

Here's a list of differences.

+0

還有http://fepy.sourceforge.net/可能會通過避免Microsoft許可snafus提供額外的庫。 – 2009-02-26 10:51:36

13

有你如何編寫代碼一些細微的差別,但最大的不同是在你有可用的庫。

使用IronPython,您可以使用所有的.Net庫,但代價是一些尚未移植到.Net VM的「正常」python庫,我認爲。

基本上,您應該期望語法和成語是相同的,但是如果您嘗試將它提供給「常規」Python解釋器,那麼爲IronPython編寫的腳本將不會運行。相反,可能更有可能,但你也會發現我認爲的差異。

0

這也取決於你是否希望你的代碼在Linux上工作。不知道IronPython是否可以在Windows平臺旁工作。

+1

如果它編譯成IL,那麼mono應該可以運行它! – Peter 2009-02-26 10:54:55

+1

它運行並可用於單聲道。 – 2009-02-26 19:53:30

1

Python是Python,唯一的區別是IronPython被設計爲在CLR(.NET Framework)上運行,因此可以互操作並使用以其他.NET語言編寫的.NET程序集。所以如果你的平臺是Windows,而你也使用.NET或你的公司,那麼應該考慮IronPython。

2

IronPython的一個優點是,與CPython不同,IronPython不使用全局解釋器鎖,從而使線程更有效。

在標準的Python實現中,線程抓取每個對象訪問的GIL。這限制了並行執行,這對於希望充分利用多個CPU時尤其重要。

2

查看博客文章IronPython is a one-way gate。它總結了我從StackOverflow提出的問題中學到的有關IronPython的一些知識。