Profiling Python-Generatoren
Ich passe eine Anwendung an, bei der Generatoren häufig verwendet werden, um die Ergebnisse zu erzielen und eine web.py-Webschnittstelle bereitzustellen.
isher konnte ich den Aufruf der for-Schleife und der ausgabeerzeugenden Anweisungen in eine Funktion einbinden und diese mit @ aufrufecProfile.run()
oderrunctx()
. Konzeptionell:
def output():
for value in generator():
print(value)
cProfile.run('output()')
In web.py muss ich das folgendermaßen umbrechen, da ich mit @ in jedem Iterationsschritt sofort eine Ausgabe der möglicherweise langwierigen Berechnung erzeugen möchtyield
:
class index:
def GET(self):
for value in generator():
yield make_pretty_html(value)
Gibt es eine Möglichkeit, alle Aufrufe an den Generator wie im ersten Beispiel zu profilieren, wenn sie wie im zweiten verwendet werden?