Python или IronPython

Как IronPython складывается до реализации Windows по умолчанию Python из python.org? Если я изучаю Python, буду ли я изучать другой язык с IronPython, и без каких библиотек я буду обходиться?

есть ли, в качестве альтернативы, какие-либо плюсы для IronPython (не включая скомпилированные классы .NET IL), которые сделали бы его более привлекательным вариантом?

8 ответов


существует ряд важных отличий:

  1. совместимость с другими языками .NET. Можно использовать другие библиотеки .NET из приложения IronPython или использовать IronPython из приложения c#, например. Эта совместимость увеличивается, с движением к большей поддержке динамических типов в .NET 4.0. Подробнее об этом см. В разделе эти два презентации на PDC 2008.
  2. лучше параллелизм / многоядерная поддержка, из-за отсутствия GIL. (Обратите внимание, что GIL не препятствует резьбе на одноядерной машине---это ограничивает производительность только на многоядерных машинах.)
  3. ограниченная возможность использования расширений Python C. The Железный проект делает значительные шаги к улучшению этого- - - они почти получили включает в себя работает!
  4. меньше кросс-платформенной поддержки; в основном, у вас есть CLR и Mono. Монофонический впечатляет, однако, и работает на многих платформах---и у них есть реализация Silverlight, называемая Луны.
  5. отчеты об улучшении производительности, хотя я не рассматривал это тщательно.
  6. feature lag: поскольку CPython является эталонной реализацией Python, он имеет "последние и самые большие" функции Python, тогда как IronPython обязательно отстает. Многие люди не считают это проблемой.

есть некоторые тонкие различия в том, как вы пишете свой код, но самая большая разница в библиотеках у вас имеется.

с IronPython у вас есть все доступные библиотеки .Net, но за счет некоторых "нормальных" библиотек python, которые не были портированы на .NET VM, я думаю.

в принципе, вы должны ожидать, что синтаксис и идиомы будут одинаковыми, но скрипт, написанный для IronPython, не будет работать, если вы попытаетесь дать его " регулярному" интерпретатор Python. Другой путь, вероятно, более вероятен, но и там вы найдете различия, я думаю.


Ну, это, как правило, быстрее.

не может использовать модули и имеет только подмножество библиотеки.

вот список различий.


посмотреть в блоге IronPython-это односторонние ворота. В нем суммируются некоторые вещи, которые я узнал о IronPython, задавая вопросы о StackOverflow.


Python-это Python, единственная разница в том, что IronPython был разработан для работы в среде CLR (.NET Framework) и, как таковой, может взаимодействовать и потреблять сборки .NET, написанные на других языках .NET. Поэтому, если ваша платформа-Windows, и вы также используете .NET или ваша компания, тогда следует рассмотреть IronPython.


одним из плюсов IronPython является то, что, в отличие от CPython, IronPython не использует глобальную блокировку интерпретатора, что делает резьбу более эффективной.

в стандартной реализации Python потоки захватывают GIL для каждого доступа к объекту. Это ограничивает параллельное выполнение, что особенно важно, если вы ожидаете полного использования нескольких процессоров.


Pro: вы можете запустить IronPython в браузере Если SilverLight установлен.


Это также зависит от того, хотите ли вы, чтобы ваш код работал на Linux. Не знаю, будет ли IronPython работать на чем-либо кроме платформ windows.