2009-03-06 18 views
28

Por lo que he visto y leído en blogs, PyPy es un proyecto muy ambicioso. ¿Cuáles son algunas ventajas que traerá a la mesa sobre sus hermanos (CPython, Jython, y IronPython)? ¿Es la velocidad, la compatibilidad multiplataforma (incluidas las plataformas móviles), la capacidad de usar c-extensiones sin el GIL, o se trata más de un ejercicio técnico sobre lo que se puede hacer?¿Qué tiene PyPy para ofrecer sobre CPython, Jython e IronPython?

+1

FWIW ya puede usar c-extensions en CPython sin GIL. Es el código Python normal (cuando se ejecuta con hilos) lo que realmente sufre de GIL. – fuzzyman

Respuesta

38

PyPy es en realidad dos proyectos:

  • Un intérprete compilador toolchain que le permite escribir intérpretes en RPython (un subconjunto estático de Python) y compilar intérpretes multiplataforma d independiente, para la JVM, para .NET (etc)
  • Una implementación de Python en RPython

Estos dos proyectos permiten muchas cosas.

  • El mantenimiento de Python en Python es mucho más fácil de mantener en C
  • Desde una única base de código se puede generar intérpretes de Python que se ejecutan en la máquina virtual Java, .NET y autónomo - en lugar de tener múltiples implementaciones ligeramente incompatibles
  • Parte de la cadena de herramientas del compilador JIT incluye un generador experimental (ahora en su quinta encarnación y empezar a trabajar muy bien) - el objetivo es un JITed PyPy para funcionar mucho más rápido que CPython
  • es mu ch más fácil de experimentar con características fundamentales del lenguaje - como la eliminación de la GIL, una mejor recolección de basura, sin pérdida de velocidad integración y así sucesivamente

por lo que hay realmente un montón de razones para PyPy a ser emocionante, y finalmente está comenzando a vivir hasta todas sus promesas.

+0

Agregaría uno a esta excelente lista: no es necesario obtener nuevas versiones de sus bibliotecas de Python (es decir, extensiones C) cada vez que se mueve a una nueva versión .X. Qué gran victoria será. – Brandon

+4

¿Cómo PyPy mejorará la situación con las extensiones C? De hecho, las extensiones C son uno de los principales inconvenientes (actualmente) con PyPy: no funcionan en absoluto a menos que sean específicamente portados. – fuzzyman

+2

Con la velocidad adicional del PyPy JIT (particularmente si pueden aplicarlo de manera efectiva al código 'ctypes'), debe haber muchas menos extensiones de C en la mezcla en primer lugar. – ncoghlan

4

La característica más importante es, por supuesto, el compilador JIT. En CPython, los archivos se compilan en bytecode (.pyc) u optimizado bytecode (.pyo) y luego se interpretan. Con PyPy se compilarán con código nativo. PyPy también incluye Stackless Python parches, incluyendo sus impresionantes features (serialización tasklet, hilos de luz, etc.)

+0

Creo que te refieres a código nativo en lugar de ejecutable nativo. – fuzzyman

+0

código ejecutable nativo ;-) – vartec

+2

Hmmm ... y no, PyPy no compila programas Python en ejecutables nativos, eso es incorrecto. – fuzzyman

0

En caso de que Python consigue un verdadero JIT Creo que va a ser tan rápido como cualquier otra aplicación.

La ventaja es que es mucho más fácil implementar nuevas funciones. Uno puede ver esto hoy al observar la biblioteca. A menudo, los módulos están escritos en Python primero y luego traducidos a C

0

compatibilidad entre plataformas

5

Este es un link a la presentación uno de los autores PyPy dio en PyCon 2009. Es muy informativo.

+0

Consulte también el torrente de conversaciones de EuroPython 2012, algunas de las cuales se realizaron en PyPy (y stackless, que ahora es parte de PyPy) –

Cuestiones relacionadas