Подтвердить что ты не робот

Python или IronPython

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

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

4b9b3361

Ответ 1

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

  • Взаимодействие с другими языками .NET. Вы можете использовать другие библиотеки .NET из приложения IronPython или, например, использовать IronPython из приложения С#. Эта интероперабельность возрастает, и движение в сторону большей поддержки динамических типов в .NET 4.0. Для подробностей об этом см. эти две презентации на PDC 2008.
  • Лучше concurrency/многоядерная поддержка из-за отсутствия GIL. (Обратите внимание, что GIL не препятствует потоку на одноядерной машине - он ограничивает производительность только для многоядерных машин.)
  • Ограниченная способность потреблять расширения Python C. Проект Ironclad делает значительные шаги для улучшения этого - они почти получили Numpy работает!
  • Меньше кросс-платформенная поддержка; в основном у вас есть CLR и Mono. Моно впечатляет, хотя и работает на многих платформах --- и у них есть реализация Silverlight, называемая Moonlight.
  • Отчеты об улучшенной производительности, хотя я не рассматривал это внимательно.
  • Задержка функции: поскольку CPython является эталонной реализацией Python, он имеет "последние и самые большие" функции Python, тогда как IronPython обязательно отстает. Многие люди не считают, что это проблема.

Ответ 2

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

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

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

Ответ 3

Ну, это обычно быстрее.

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

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

Ответ 4

Одним из плюсов IronPython является то, что в отличие от CPython, IronPython не использует Global Interpreter Lock, тем самым делая потоки более эффективными.

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

Ответ 6

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

Ответ 8

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