Cómo usar Cython en Python
Es una herramienta para generar rápidamente módulos de extensión de Python
Su sintaxis es una sintaxis híbrida de Python y c
Cython sirve como compilador de Python en informática científica. Muy popular en el campo, se utiliza para aumentar la velocidad de Python y realizar computación paralela a través de la biblioteca OpenMPI.
2. Instalar Cython (Windows)
Mi entorno es win7 x64, python27, vs2010
La base de la instalación es un compilador de c (aquí comienza con vs2010 como un ejemplo)
Desde pute.py
desde distutils.core import setup
desde Cython.Build import cythonize
setup(
nombre = 'Aplicación Hola mundo',
ext_modules = cythonize("compute.pyx"),
)
test.
importar cálculo
importar tiempo
starttime = time.clock()
compute.integrate_f(3.2, 6.9, 1000000)
hora final = hora.reloj()
imprimir "leer: f s" (hora final - hora inicio)
ejecutar
1< < / p>
2
3
python setup.py build
python setup.py install
python test.py
Resultados
1
leer: 0.332332 s
Código reemplazado con variables estáticas
compute2. p>
def f(doble x):
Devuelve x ** 2 - x
def integrar_f(doble a, doble b, int N):
cdef int i
cdef doble s, dx
s = 0
dx = (b - a) / N
para i en rango(N):
s = f(a i * dx)
devuelve s * d
setup2.
desde distutils.core import setup
desde Cython.Build import cythonize
setup(
nombre = 'Aplicación Hola mundo',
ext_modules = cythonize("compute2.pyx"),
)
test2.py
importar compute2
importar tiempo p>
hora de inicio = hora.reloj()
compute2.integrate_f(3.2, 6.9, 1000000)
hora de finalización = hora.reloj()
imprimir "leer: f s" (hora de finalización - hora de inicio)
Ejecutar
1
2
3
<p>python setup.py build
python setup.py install
python test.py
Resultados
1
leer: 0.109200s
Conclusión
Para este caso de prueba, usar escritura estática es 3 veces más rápido que no usar escritura estática.
Ejemplo 3.2.2 Función de tipo estático
Cambie la función en Compute2.pyx a
cdef double f(double x):
Devuelve x ** 2 - x
def integrar_f(doble a, doble b. int N.):
Devuelve x ** 2 - x