2008-09-17 11 views
9

Soy relativamente nuevo en Python, y siempre he usado la implementación estándar de cpython (v2.5).¿Cuáles son los pros y los contras de las diversas implementaciones de Python?

Me he estado preguntando sobre las otras implementaciones, particularmente Jython e IronPython. ¿Qué los hace mejores? ¿Qué los empeora? ¿Qué otras implementaciones hay?

Supongo que lo que estoy buscando es un resumen y una lista de los pros y los contras de cada implementación.

Respuesta

1

Pros: Acceda a las bibliotecas disponibles para JVM o CLR.

Contras: Ambos, naturalmente, van a la zaga de CPython en términos de características.

15

Jython y IronPython son útiles si usted tiene una necesidad imperiosa para la interfaz con las bibliotecas existentes escritas en una plataforma diferente, como si tiene 100.000 líneas de Java y lo que desea es escribir un script Python 20 líneas . No es particularmente útil para cualquier otra cosa, en mi opinión, porque son perpetuamente algunas versiones detrás de CPython debido a la inercia de la comunidad.

Stackless es interesante porque tiene soporte para hilos verdes, continuaciones, etc. Una especie de Erlang-lite.

PyPy es un intérprete/compilador experimental que algún día puede suplantar a CPython, pero por ahora es más una prueba para nuevas ideas.

+1

Parte de la magia para Stackless (hilos verdes, etc.) está disponible para la implementación de CPython en la biblioteca py.magic, que fue desarrollada por PyPy. Por lo que sé, el desarrollo sin apilamiento se calmó un poco, la mayor parte del trabajo para las funciones de Erlang-lite ahora va a PyPy. – Ryan

1

IronPython y Jython usan el entorno de ejecución para .NET o Java y con eso viene la compilación Just In Time y un recolector de basura diferente del CPython original. También podrían ser más rápidos que CPython gracias al JIT, pero no estoy seguro.

Una desventaja en el uso de Jython o IronPython es que no se pueden usar módulos C nativos, solo se pueden usar en CPython.

1

PyPy es una implementación de Python escrita en RPython que es un subconjunto de Python.

RPython se puede traducir para ejecutar en una máquina virtual o, a diferencia de Python estándar, RPython se puede compilar estáticamente.

6

Un beneficio adicional para Jython, al menos para algunos, es it lacks the GIL (Global Interpreter Lock) y utiliza los subprocesos nativos de Java. Esto significa que puede ejecutar código Python puro en paralelo, algo que no es posible con GIL.

+0

¡Lo mismo con IronPython! –

Cuestiones relacionadas