Python или IronPython

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

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


person johnc    schedule 26.02.2009    source источник


Ответы (8)


Есть ряд важных отличий:

  1. Взаимодействие с другими языками .NET. Например, вы можете использовать другие библиотеки .NET из приложения IronPython или использовать IronPython из приложения C#. Эта функциональная совместимость увеличивается с движением к большей поддержке динамических типов в .NET 4.0. Подробную информацию об этом см. в этих две презентации на PDC 2008.
  2. Лучшая поддержка параллелизма/многоядерности из-за отсутствия GIL. (Обратите внимание, что GIL не запрещает многопоточность на одноядерных машинах — он ограничивает производительность только на многоядерных машинах.)
  3. Ограниченная возможность использования расширений Python C. Проект Ironclad делает значительные успехи в улучшении этого --- они почти достигли Numpy работает!
  4. Меньшая кроссплатформенная поддержка; по сути, у вас есть CLR и Mono. Тем не менее, Mono впечатляет и работает на многих платформах, и у них есть реализация Silverlight, которая называется . Лунный свет.
  5. Сообщается об улучшении производительности, хотя я не изучал это внимательно.
  6. Отставание функций: поскольку CPython является эталонной реализацией Python, он имеет «самые последние и лучшие» функции Python, тогда как IronPython обязательно отстает. Многие не считают это проблемой.
person zweiterlinde    schedule 26.02.2009

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

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

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

person Epcylon    schedule 26.02.2009

Ну вообще быстрее.

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

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

person TraumaPony    schedule 26.02.2009
comment
И есть fepy.sourceforge.net, который может предложить дополнительные библиотеки, избегая путаницы с лицензированием Microsoft. - person S.Lott; 26.02.2009
comment
ссылка не работает и ссылка в комментарии тоже - person t0b4cc0; 30.12.2020

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

person John D. Cook    schedule 26.02.2009

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

person Christian Witts    schedule 26.02.2009
comment
Это больше для личного назидания, я в основном работаю в сфере РС, однако это не обязательно означает, что я должен ограничивать свое личное развитие. - person johnc; 27.02.2009

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

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

person Rafał Dowgird    schedule 26.02.2009

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

person Andy Dent    schedule 26.02.2009

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

person Christopher Mahan    schedule 26.02.2009
comment
если он скомпилируется в IL, тогда моно сможет его запустить! - person Peter; 26.02.2009
comment
Он работает и доступен для моно. - person Ali Afshar; 26.02.2009