Как получить детализацию вызова метода из модуля профилирования горячего снимка python? - PullRequest
0 голосов
/ 10 ноября 2011

Я использую профилировщик горячих снимков python, и он сообщает мне, что один из моих методов foo () вызывается N раз, где N больше, чем я ожидал.

Есть ли способузнать больше о том, откуда вызывается foo ()?В идеале, список имен модулей и номеров строк?

(я не могу просто использовать grep. Моя кодовая база содержит множество вызовов foo (), но я хочу найти только те, которые на самом деле выполняютсяпри определенных условиях, которые я настроил в профилировщике.)

1 Ответ

1 голос
/ 10 ноября 2011

Один из вариантов - добавить запись в начало списка foo(), чтобы указать, откуда он был вызван, вам просто нужно добавить следующие строки:

def foo():
    import traceback
    print 'foo called from', traceback.extract_stack(limit=2)[0][2]
    # previous foo() code

Вместо записи вы можете найти это большеполезно для ведения глобального словаря, в котором вы отслеживаете количество вызовов foo() из разных мест.

...