2008-10-15 17 views

Respuesta

14
  • Hay pyrex que compila pitón como fuente de módulos de extensión de Python
  • rpython que le permite compilar Python con algunas restricciones a varios motores como C, LLVM, .Net, etc.
  • También hay shed-skin que traduce python a C++, pero no puedo decir si es bueno.
  • PyPy implementa un compilador JIT que intenta optimizar el tiempo de ejecución traduciendo partes de lo que se ejecuta en el tiempo de ejecución al código de máquina, si escribe para el intérprete PyPy que podría ser una ruta viable.
  • El mismo autor que está trabajando en JIT en PyPy escribió psyco anteriormente que optimiza python en el intérprete de CPython.
+0

AFAIK rpython no reemplaza pyrex; son tareas separadas, y pyrex debería funcionar bien (sería mi segunda sugerencia, después de volver a escribir las áreas problemáticas en C/C++). –

+0

También está IronPython (asumiendo Windows o Mono), aunque es cuestionable si obtendrás velocidad extra. –

+0

Los enlaces a rpython y PyPy están inactivos. – BandGap

7

Puede usar algo como py2exe para compilar su script python en un archivo exe, o Freeze para un archivo binario en Linux.

ver: How can I create a directly-executable cross-platform GUI app using Python?

+0

@Howler, py2exe no entregará la mayoría de lo que el OP estaba pidiendo. El código todavía se está ejecutando dentro del tiempo de ejecución de Python (aunque haya sido renombrado) y no se ejecutará más rápido que el script por sí mismo) @David: Puede considerar reescribir la aplicación principal en C/C++ y extender w/Python. – technomalogical

+0

O, en lugar de reescribir la aplicación principal, simplemente encuentre las zonas interactivas y escríbalas en C/C++ como una extensión de Python. –

+0

En realidad, estoy buscando una solución para inyectar código en un entorno que ya se está ejecutando. Pero este código debe ser realmente rápido, por lo que la interpretación no es una opción. – David

0

Creo que puede usar jython para compilar python a bytecode de Java, y luego compilarlo con GCJ.

2

he tenido mucho éxito utilizando Cython, que se basa en y se extiende pyrex:

Cython es un lenguaje que hace que la escritura extensiones C para el lenguaje Python tan fácil como propio Python. Cython se basa en el bien conocido Pyrex, pero admite más funcionalidades y optimizaciones de vanguardia .

El lenguaje Cython está muy cerca de el lenguaje Python, pero Cython , además, apoya llamada de C. funciones y declarar tipos de C en variables y atributos de clase. Este permite que el compilador genere muy código C eficiente del código de Cython.

Esto hace Cython el lenguaje ideal para envolver de bibliotecas de C externos, y rápidas para los módulos C que aceleran la ejecución de código Python.

Cuestiones relacionadas