2012-09-14 18 views
6

¿Hay alguna diferencia en la programación de python al usar solo python y al usar el compilador pypy? Quería probar usar pypy para que el tiempo de ejecución de mi programa sea más rápido. ¿Funciona también toda la sintaxis que funciona en python en pypy? Si no hay diferencia, ¿puedes decirme cómo puedo instalar pypy en debian lunux y algunos ejemplos de uso en pypy? Google no contiene mucha información sobre pypy aparte de su descripción.Uso del compilador pypy

Respuesta

11

Desde el PyPy features page:

PyPy 1.9 implementa Python 2.7.2 y se ejecuta en Intel x86 (IA-32) y plataformas x86_64, con ARM y PPC estar en marcha. Es compatible con todos los el lenguaje principal, pasando el conjunto de pruebas de Python.

Esto significa que casi cualquier código que haya escrito en Python 2.7 funcionará. Las únicas excepciones que vale la pena mencionar son algunas extensiones de Python escritas en C, como numpy.

La instalación debe ser bastante fácil, puede download a linux binary from here. Luego simplemente extrae el intérprete. A partir de este punto, puede ejecutar sus programas de Python de forma similar a cómo los ejecutaría con el intérprete de Python normal.

En la línea de comandos, en lugar de:

python my_program.py 

Uso:

path/to/where/you/installed/pypy my_program.py 

Para ver ejemplos de cómo/por qué es posible que desee utilizar PyPy, echa un vistazo a this video de PyCon 2012.

+2

También vea http://pypy.org/compat.html que enumera todas las principales diferencias conocidas entre PyPy y el 2.x actual CPython, y tiene un enlace a todas las diferencias conocidas hasta un nivel de detalle insignificante. – abarnert

+0

¿no es pypy más rápido en general? Cuando ejecuto mi programa usando pypy, está tardando el doble de tiempo que la ejecución normal de un script de python. extraño...!! –

+3

Pypy será más rápido en muchos casos, pero no en todos. Es más probable que vea aceleraciones más grandes en programas de ejecución más grandes y más largos. Hay una comparación de velocidad entre CPython y PyPy en varias tareas diferentes aquí: http://speed.pypy.org/. Observe que PyPy mejora mucho más que otras. – Wilduck

2

pypy es una implementación alternativa compatible del lenguaje python. Esto significa que hay pocas diferencias (intencionales). Una de las pocas diferencias es que pypy no utiliza el recuento de referencias. Esto significa, por ejemplo, que debe cerrar manualmente sus archivos, no se cerrarán automáticamente cuando su variable de archivo quede fuera del alcance como en CPython.

+0

"* pocas diferencias intencionales de sintaxis"? A diferencia de ninguno? ¿Podría darnos alguna diferencia sintáctica? – delnan

+0

Ah descuidado de mi parte Quise decir diferencias, no específicamente diferencias de sintaxis. –

+2

Los archivos * se cerrarán automáticamente, no puede confiar en que suceda de inmediato. Entonces 'abrir ('foo', 'w'). Write ('test'); print open ('foo', 'r'). read() 'no es probable que imprima" prueba ". Pero eso es malo Python de todos modos, ya que (a) los documentos oficiales de Python no garantizan que se utilizará, y lo más importante (b) depender de un efecto secundario provocado por cosas que van fuera del alcance para tener un impacto significativo en el camino su programa opera es una * violación * grave de "explícito es mejor que implícito". – Ben