Citón | |
---|---|
clase de idioma | software de código abierto , implementación de lenguaje de programación [d] , Transpiler , lenguaje de programación , software libre y biblioteca de Python [d] |
Apareció en | 28 de julio de 2007 |
Autor | Robert Bradshaw, Stefan Behnel y más |
Liberar | 0.29.32 ( 29 de julio de 2022 ) [1] |
Versión de prueba | 3.0.0a11 ( 31 de julio de 2022 ) [2] |
sido influenciado | Pirex |
Licencia | Licencia Apache |
Sitio web | cython.org |
sistema operativo | Sistema operativo similar a Linux y Unix |
Cython es un lenguaje de programación que facilita la escritura de módulos de código C / C++ para Python . Además de la sintaxis estándar de Python, se admite lo siguiente:
El código de Cython se convierte en código C/C++ para la compilación y luego se puede usar como una extensión de Python estándar o como una aplicación independiente con la biblioteca de tiempo de ejecución de Cython incorporada.
Cython es el sucesor del lenguaje de programación Pyrex , pero tiene más funciones y optimizaciones. [3]
Cython tiene una sintaxis muy cercana a Python.
Un beneficio particular de este enfoque "perfecto" para la mezcla Python/C es que el código Python existente puede configurarse para ejecutarse casi tan rápido como agregar algunas declaraciones de tipos estáticos y algunas adaptaciones en bucles críticos, sin necesidad de un código de interfaz complejo. . La velocidad de codificación y la legibilidad del código siguen siendo comparables a las de Python.
Debido a la sobrecarga reducida en las estructuras de control (especialmente en los bucles), las optimizaciones optimistas y la inferencia de tipos (limitada), el código de Python compilado con Cython generalmente se ejecuta más rápido que en CPython 2.6.x, aunque la mejora absoluta depende en gran medida del código. Con declaraciones de tipo, las aceleraciones típicas para cálculos/matrices numéricas son alrededor de 100-1000 veces. [4] En comparación, un aumento de velocidad típico con Psyco ( un compilador JIT para Python) es de aproximadamente 4 a 100 veces. [5]
Cython se ha optimizado para una sobrecarga de llamadas de subrutina baja, por lo que llamar al código C/C++ externo desde Python a través del shell de Cython es generalmente más rápido que la mayoría de las otras soluciones. [6] [7]
El siguiente ejemplo calcula la función de Ackermann :
# Archivo ackermann.pyx cdef ackermann ( int m , int n ): if m == 0 : return n + 1 elif n == 0 : return ackermann ( m - 1 , 1 ) else : return ackermann ( m - 1 , ackermann ( m , n - 1 )) imprimir ( "Ackermann:" ) imprimir ( ackermann ( 0 , 3 )) imprimir ( ackermann ( 1 , 4 ))Para obtener un archivo ejecutable, debe traducirse a C (aquí y más abajo: comandos de shell de un sistema similar a UNIX ) [8] :
cython --embed ackermann.pyx -o ackermann.cDespués de eso, puede compilar el archivo intermedio resultante [8] :
gcc -g -O2 -o ackermann ackermann.c ` python-config --incluye --ldflags `Para enlazar bibliotecas C se puede utilizar SWIG , que soporta varios lenguajes de programación a la vez, pero por su generalidad, Cython pierde algo en facilidad de uso (la cantidad de código adicional necesario). Otras contrapartes notables incluyen Parakeet (usa la compilación LLVM y JIT de código de Python especialmente marcado) [9] y Nuitka (un traductor de Python a C++ que, como PyPy , intenta escribir un programa de Python en tiempo de compilación) [10] [8] .
Pitón | |
---|---|
Comunidad | |
Implementaciones | |
Otro |
|