profiling cython

profiling - Cómo perfilar las funciones de cython línea por línea



(2)

Aunque realmente no lo llamaría perfilado, hay otra opción para analizar su código Cython ejecutando cython con -a (anotar), esto crea una página web en la que se resaltan los principales cuellos de botella. Por ejemplo, cuando me olvido de declarar algunas variables:

Después de declararlos correctamente ( cdef double dudz, dvdz ):

A menudo me cuesta encontrar cuellos de botella en mi código de cython . ¿Cómo puedo perfilar cython funciones de cython línea por línea?


Robert Bradshaw me ayudó a hacer que la herramienta line_profiler Robert Kern trabajara para cdef funciones cdef y pensé que compartiría los resultados en .

En resumen, configure un archivo .pyx normal y .pyx un script y agregue lo siguiente antes de su llamada a cythonize .

from Cython.Compiler.Options import directive_defaults directive_defaults[''linetrace''] = True directive_defaults[''binding''] = True

Además, debe definir la macro C CYTHON_TRACE=1 modificando la configuración de sus extensions modo que

extensions = [ Extension("test", ["test.pyx"], define_macros=[(''CYTHON_TRACE'', ''1'')]) ]

Un ejemplo %%cython uso de %%cython magic en el cuaderno de iPython está aquí: http://nbviewer.ipython.org/gist/tillahoffmann/296501acea231cbdf5e7