2012-06-15 7 views
17

Cuando se ejecuta desde la línea de comandosCython opción -a (para generar amarillo-sombra HTML) y sin línea de comandos

$ cython -a mycode.pyx 

se obtiene un archivo HTML muy agradable "anotación" con sombreado amarillo para indicar las operaciones lentas pitón vs operaciones C rápidas. También obtienes este mismo archivo HTML como un enlace cada vez que compilas el código de Cython en Sage. Mis preguntas son: (1) ¿Puedo obtener este archivo HTML si estoy compilando usando distutils? (2) ¿Puedo obtener este archivo HTML si estoy compilando usando pyximport? ¡¡Gracias!!

+0

Siempre puede llamar al comando 'cython' utilizando' subproceso'. De lo contrario, lea el código fuente de Cython; no es tremendamente difícil de seguir. –

Respuesta

20

Gracias al comentario de larsmans y la Cython email list, ahora tengo muchas opciones satisfactorias para generar el archivo "anotaciones" HTML sin salir IPython:

(1) Use subproceso ...

import subprocess 
subprocess.call(["cython","-a","myfilename.pyx"]) 

(2) gire en la bandera anotar global en Cython mí mismo, antes de compilar:

import Cython.Compiler.Options 
Cython.Compiler.Options.annotate = True 

(3) Pase annotate=True en cythonize() [cuando se usa el distutils compilation method].

Parece que pyximport no tiene su propia opción directa para activar la anotación.

+0

Como se podría adivinar, es 'cython3' para Python 3. – handle

+0

' annotate' no se encuentra en http://cython.readthedocs.io/en/latest/src/reference/compilation.html#compiler-directives y agregarlo como '#cython: annotate = True' no genera el archivo, así que acabo de usar su opción 3 (con éxito). – handle

+0

@handle - La opción (2) siempre ha estado sin documentar. ¿Lo intentaste realmente? –

Cuestiones relacionadas