Usar Cython como convertidor de Python a C


Tengo enormes módulos Python(+8000 líneas) .Básicamente tienen toneladas de funciones para interactuar con una plataforma de hardware a través del puerto serie leyendo y escribiendo en registros de hardware.

No son algoritmos numéricos. Por lo tanto, la aplicación solo está leyendo/escribiendo en registros de hardware/memoria. Utilizo estas bibliotecas para escribir scripts personalizados. Eventualmente, necesito mover todas estas cosas para ser ejecutadas en un procesador embebido en mi hardware para tener un control más fino, luego simplemente comienzo el evento desde PC y el resto está en hardware.

Así que necesito convertirlos a C. Si puedo hacer que mis scripts se conviertan a C mediante una herramienta automática, eso me ahorraría mucho tiempo. Por eso me sentí atraído por Cython. La eficiencia no es importante mis códigos no son calculadores de números. Pero el código generado debería ser relativamente pequeño para caber en mi memoria limitada (unos pocos cientos de Kilobytes).

¿Puedo usar Cython como convertidor para mis scripts Python personalizados a C? Mi conjetura es sí, en cuyo caso puede Yo uso estos .c archivos que se ejecutarán en mi hardware? Mi conjetura no es puesto que tengo que tener Cython en mi hardware también para que funcionen. Pero si sólo crea algunos .c archivos, puedo ir a través y hacerlo independiente ya que el código no está utilizando muchas de las características de Python, solo lo utilizan como un script rápido para implementar.

Author: Braiam, 2011-08-18

2 answers

  1. Sí, en esencia esto es lo que hace Cython. Pero ...
  2. No necesitas Cython, sin embargo, necesitas libpython. Puede que sientas que no usa muchas características de Python, pero creo que si intentas esto descubrirás que no es cierto't no podrás separar tu programa de su dependencia de libpython mientras sigues usando el lenguaje Python.

Otra opción es PyPy , específicamente es cadena de herramientas de traducción, NO la Pitón PyPy interprete. Le permite traducir RPython, un subconjunto del lenguaje Python, a C. Si realmente no está utilizando muchas características o bibliotecas del lenguaje Python, esto puede funcionar.

PyPy se conoce principalmente como una implementación alternativa de Python, pero también es un conjunto de herramientas para compilar lenguajes dinámicos en varias formas. Esto es lo que permite que la implementación PyPy de Python, escrita en (R)Python, sea compilada en código máquina.

Si C++ está disponible, Nuitka es un compilador de Python a C++ que funciona para Python normal, no solo para RPython (que es lo que usan shedskin y PyPy).

 40
Author: agf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-02 10:09:01

Si C++ está disponible para esa plataforma embebida, existe shed skin, que convierte python en c++.

 2
Author: kolen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-18 19:19:54