Соглашаясь с ответами, сделанными Ридом Копси и Алексом Мартелли, я хотел бы указать еще одно различие - Глобальный шлюз переводчика (GIL). В то время как у IronPython нет ограничений GIL, CPython делает - так что для тех приложений, где GIL является узким местом, скажем, в некоторых многоядерных сценариях, IronPython имеет преимущество перед Python.NET.
Из документации Python.NET:
Важное примечание для: для внедрения Python не свободно нарезкой и использует глобальную блокировку интерпретатора, чтобы многопоточные приложения к взаимодействуют безопасно интерпретатор Python . Гораздо больше информации об этом можно найти в документации на Python C на сайте www.python.org
.
Когда вложение Python в управляемом приложения, вы должны управлять GIL точно так же, как вы бы при встраивании Python в C или C++ приложений.
Перед взаимодействовать с любым из объектов или API, предоставляемые Python.Runtime
имен, вызывающий код должен приобрели Python глобальную блокировку интерпретатора посредством вызова метода PythonEngine.AcquireLock
. Исключением из этого правила является только метод PythonEngine.Initialize
, который может быть вызван при запуске без , приобретя GIL.
При завершении работы с API, Python, управляемый код должен вызвать соответствующий PythonEngine.ReleaseLock
выпустить на GIL и позволить другим потокам использовать Python.
В AcquireLock
и ReleaseLock
методов представляют собой тонкие упаковщики над неуправляемого PyGILState_Ensure
и PyGILState_Release
функциями из Python API и документация для этих API, относится к управляемым версии.
Еще одна проблема - поддержка IDE. В настоящее время CPython имеет лучшую поддержку IDE, чем IronPython, поэтому это может быть фактором выбора одного из них.
У IronPython есть «легкие» исключения, которые теперь намного быстрее. Тест TryRaiseExcept от PyBench, который выполнялся в 60 раз медленнее, теперь только в 1,6 раза медленнее. WithRaiseExcept все еще медленный, но в 4 раза быстрее, чем раньше. Для большинства других тестов IPy на самом деле * быстрее *. [** Сравнение IronPython 2.7 с сопоставлением производительности CPython 2.7 **) (http://ironpython.codeplex.com/wikipage?title=IP27A1VsCPy27Perf) (полный [список тестов] (http://ironpython.codeplex.com/wikipage? название = IronPython% 20Performance)). – Athari