Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo usar Cython en Python

Cómo usar Cython en Python

1. ¿Qué es Cython?

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

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