2009-02-26 24 views
28

¿Cómo se compara IronPython con la implementación predeterminada de Python de Windows en Windows? Si estoy aprendiendo Python, ¿estaré aprendiendo un lenguaje subtilmente diferente con IronPython, y qué bibliotecas estaría haciendo sin él?Python o IronPython

¿Hay, alternativamente, algún profesional en IronPython (sin incluir las clases compiladas .NET IL) que lo haría una opción más atractiva?

Respuesta

28

Hay una serie de diferencias importantes:

  1. interoperabilidad con otros lenguajes .NET. Puede usar otras bibliotecas .NET desde una aplicación IronPython, o usar IronPython desde una aplicación C#, por ejemplo. Esta interoperabilidad está aumentando, con un movimiento hacia un mayor soporte para los tipos dinámicos en .NET 4.0. Para obtener muchos detalles al respecto, consulte thesetwo presentaciones en PDC 2008.
  2. Mejor compatibilidad de multinúcleo/concurrencia, debido a la falta de un GIL. (Tenga en cuenta que el GIL no inhibe el enhebrado en una máquina de un solo núcleo, solo limita el rendimiento en máquinas con núcleos múltiples).
  3. Capacidad limitada para consumir extensiones Python C. El proyecto Ironclad está dando pasos importantes hacia la mejora --- ¡casi han conseguido que Numpy funcione!
  4. Soporte menos multiplataforma; básicamente, tienes el CLR y Mono. Sin embargo, Mono es impresionante y funciona en muchas plataformas, y tienen una implementación de Silverlight, llamada Moonlight.
  5. Informes de rendimiento mejorado, aunque no he estudiado esto con cuidado.
  6. Retraso de funciones: ya que CPython es la implementación de referencia de Python, tiene las características "más recientes y mejores" de Python, mientras que IronPython necesariamente está rezagado. Muchas personas no encuentran que esto sea un problema.
6

Bueno, generalmente es más rápido.

No se pueden usar módulos, y solo tiene un subconjunto de la biblioteca.

Here's a list of differences.

+0

Y está http://fepy.sourceforge.net/ que puede ofrecer bibliotecas adicionales al evitar snafus de licencias de Microsoft. –

13

hay algunas diferencias sutiles en la forma de escribir el código, pero la mayor diferencia es en las bibliotecas que tienen disponibles.

Con IronPython, tiene todas las bibliotecas .Net disponibles, pero a expensas de algunas de las bibliotecas "normales" de python que no se han transferido a la VM .Net, creo.

Básicamente, debe esperar que la sintaxis y los modismos sean los mismos, pero una secuencia de comandos escrita para IronPython no se ejecutará si intenta entregarla al intérprete de Python "normal". A la inversa, probablemente sea más probable, pero creo que también encontrarás diferencias.

0

También depende de si desea que su código funcione en Linux. No sé si IronPython funcionará en cualquier cosa aparte de las plataformas de Windows.

+1

si compila a IL, ¡entonces mono debería ser capaz de ejecutarlo! – Peter

+1

Se ejecuta y está disponible para mono. –

1

Python es Python, la única diferencia es que IronPython se diseñó para ejecutarse en el CLR (.NET Framework) y, como tal, puede interoperar y consumir ensamblados .NET escritos en otros lenguajes .NET. Entonces, si su plataforma es Windows y también usa .NET o su compañía sí, debería considerar IronPython.

+0

Esto es más para la edificación personal, principalmente trabajo en el espacio de MS, sin embargo, eso no significa necesariamente que deba limitar mi propio desarrollo personal. – johnc

2

Uno de los pros de IronPython es que, a diferencia de CPython, IronPython no usa Global Interpreter Lock, lo que hace que el enhebrado sea más efectivo.

En la implementación estándar de Python, los subprocesos toman el GIL en cada acceso de objeto. Esto limita la ejecución en paralelo, que es especialmente importante si espera utilizar completamente múltiples CPU.

2

Ver la publicación del blog IronPython is a one-way gate. Resume algunas cosas que he aprendido sobre IronPython de hacer preguntas en StackOverflow.