Estoy adaptando una aplicación que hace un uso intensivo de generadores para producir sus resultados para proporcionar una interfaz web web.py.Perfilando generadores Python
Hasta ahora, podía envolver la llamada a las sentencias for-loop y output-producing en una función y llamarla usando cProfile.run()
o runctx()
. Conceptualmente:
def output():
for value in generator():
print(value)
cProfile.run('output()')
En web.py, tengo que envuelve la siguiente manera, ya que quiero para producir inmediatamente la salida del cómputo potencialmente larga en cada paso de iteración utilizando yield
:
class index:
def GET(self):
for value in generator():
yield make_pretty_html(value)
¿Hay alguna manera de perfilar todas las llamadas al generador como en el primer ejemplo cuando se usa como en el segundo?
¿Simplemente desea medir la llamada a la función completa en lugar de solo una iteración? Como en 'cProfile.run ('list (index(). GET())')'? –
En esencia, esto es lo que logra el bucle for. El problema aquí es que no tengo control sobre las llamadas a 'GET()', es manejado por 'web.py'. Además, no creo que la producción se produzca de esa manera (usando el valor de retorno). –