Я адаптирую приложение, которое интенсивно использует генераторы для получения результатов, чтобы обеспечить веб-интерфейс web.py.
До сих пор я мог обернуть вызов цикла for и операторы, производящие вывод, в функцию и вызвать ее, используя 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)
Есть ли способ профилировать все вызовы генератора, как в первом примере, когда он используется, как во втором?
cProfile.run('list(index().GET())')
? - person Jochen Ritzel   schedule 10.09.2010GET()
, их обрабатываетweb.py
. Кроме того, я не думаю, что вывод будет производиться таким образом (с использованием возвращаемого значения). - person Daniel Beck   schedule 10.09.2010