Sto adattando un'applicazione che fa un uso massiccio di generatori per produrre i suoi risultati per fornire un'interfaccia web web.py.Generatori di profili Python
Finora, ho potuto racchiudere la chiamata al ciclo for e le istruzioni di produzione in uscita in una funzione e chiamarla utilizzando cProfile.run()
o runctx()
. Concettualmente:
def output():
for value in generator():
print(value)
cProfile.run('output()')
In web.py, devo avvolgerla seguente modo, poiché voglio produrre immediatamente uscita dal calcolo potenzialmente esecuzione prolungata in ogni iterazione passaggio utilizzando yield
:
class index:
def GET(self):
for value in generator():
yield make_pretty_html(value)
C'è un modo per profilare tutte le chiamate al generatore come nel primo esempio quando è usato come nel secondo?
Vuoi semplicemente misurare l'intera chiamata di funzione anziché una sola iterazione? Come in 'cProfile.run ('list (index(). GET())')'? –
In sostanza, questo è ciò che il ciclo for realizza. Il problema qui è che non ho il controllo sulle chiamate a 'GET()', è gestito da 'web.py'. Inoltre, non penso che l'output verrebbe prodotto in quel modo (usando il valore restituito). –