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