如何从python hotshot分析模块获取方法调用细节?

如何从python hotshot分析模块获取方法调用细节?,python,profiler,callstack,Python,Profiler,Callstack,我正在使用python hotshot profiler,它告诉我我的一个方法foo()被调用了N次,其中N是一个比我预期的大的数字 有没有办法获得有关调用foo()的详细信息?理想情况下,模块名称和行号的列表 (我不能只使用grep。我的代码库包含很多对foo()的调用,但我只想找到在我在分析器中设置的特定条件下实际执行的那些调用。)一个选项是在foo()顶部添加一些日志记录,以指示调用它的位置,您只需要添加以下行: def foo(): import traceback pr

我正在使用python hotshot profiler,它告诉我我的一个方法foo()被调用了N次,其中N是一个比我预期的大的数字

有没有办法获得有关调用foo()的详细信息?理想情况下,模块名称和行号的列表


(我不能只使用grep。我的代码库包含很多对foo()的调用,但我只想找到在我在分析器中设置的特定条件下实际执行的那些调用。)

一个选项是在
foo()
顶部添加一些日志记录,以指示调用它的位置,您只需要添加以下行:

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

与其记录日志,您可能会发现维护一个全局字典更有用,在这里您可以跟踪从不同位置调用
foo()
的次数。

您可以尝试。如果您想要整个调用堆栈:
print“call stack:%s”%[caller[2]用于回溯中的调用方。extract_stack()]