59 votos

¿Convertir un programa Python en código C/C++?

¿es posible convertir un programa de Python a C/C++?

Necesito implementar un par de algoritmos, y no estoy seguro de si la diferencia de rendimiento es lo suficientemente grande como para justificar todo el dolor que pasaría al hacerlo en C/C++ (que no se me da bien). He pensado en escribir un algoritmo simple y compararlo con una solución convertida. Si sólo eso es significativamente más rápido que la versión de Python, entonces no tendré otra opción que hacerlo en C/C++.

Gracias de antemano por su ayuda.

68voto

S.Lott Puntos 207588

Si la variante C necesita x horas menos, entonces invertiría ese tiempo en dejar que los algoritmos funcionen más tiempo/de nuevo

"invertir" no es la palabra correcta aquí.

  1. Construye una implementación funcional en Python. Terminarás esto mucho antes de terminar una versión en C.

  2. Mide el rendimiento con el perfilador de Python. Arregla los problemas que encuentres. Cambia las estructuras de datos y los algoritmos según sea necesario para hacerlo realmente bien. Terminarás esto mucho antes de terminar la primera versión en C.

  3. Si sigue siendo demasiado lento, traduce manualmente el Python bien diseñado y cuidadosamente construido a C.

    Debido a la forma en que funciona la retrospectiva, hacer la segunda versión desde el Python existente (con las pruebas unitarias existentes, y con los datos de perfilado existentes) seguirá siendo más rápido que tratar de hacer el código C desde cero.

Esta cita es importante.

Regla de Thompson para los primeros fabricantes de telescopios
Es más rápido hacer un espejo de cuatro pulgadas y luego un espejo de seis pulgadas que hacer un espejo de seis pulgadas.

Bill McKeenan
Instituto Wang

52voto

Lennart Regebro Puntos 52510

Sí. Mira Cython . Eso es lo que hace: Convierte Python a C para aumentar la velocidad.

20voto

ephemient Puntos 87003

Piel de gallina es "un compilador (restringido) de Python a C++".

4voto

seagull1089 Puntos 21

Acabo de encontrarme con este nueva herramienta en las noticias de los hackers.

De su página - "Nuitka es un buen sustituto del intérprete de Python y compila todas las construcciones que ofrece CPython 2.6, 2.7, 3.2 y 3.3. Traduce el Python en un programa C++ que luego utiliza "libpython" para ejecutarse de la misma manera que lo hace CPython, de forma muy compatible."

1voto

ashley Puntos 55

http://code.google.com/p/py2c/ parece una posibilidad - también mencionan en su sitio: Cython, Shedskin y RPython y confirman que convierten el código Python a C/C++ puro, que es mucho más rápido que C/C++ plagado de llamadas a la API de Python. Nota: No lo he probado pero voy a hacerlo..

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X