Я адаптирую приложение, которое сильно использует генераторы для получения своих результатов, чтобы предоставить веб-интерфейс web.py.
До сих пор я мог привязать вызов к циклу и операторам, производящим вывод в функции, и вызвать их с помощью cProfile.run()
или runctx()
. Концептуально:
def output():
for value in generator():
print(value)
cProfile.run('output()')
В web.py, я должен обернуть его следующим образом, так как я хочу немедленно произвести вывод из потенциально долговременного вычисления на каждом шаге итерации с помощью yield
:
class index:
def GET(self):
for value in generator():
yield make_pretty_html(value)
Есть ли способ профилировать все вызовы генератору, как в первом примере, когда он использовался как во втором?