2011-11-09 29 views
0

我使用python hotshot分析器,它告诉我我的一个方法foo()被调用N次,其中N是比我期望的更大的数字。如何从python hotshot分析模块获取方法调用详细信息?

有没有办法获得有关从哪里调用foo()的更多细节?理想情况下,模块名称和行号列表?我不能只使用grep,我的代码库包含很多对foo()的调用,但是我只想找到那些在我在profiler中设置的特定条件下实际执行的代码。 )

+0

您可以尝试* [此](http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378#4299378)*。 –

+0

有趣!谢谢迈克。 –

回答

1

一种选择是将一些记录添加到foo()顶部,指示了它是从所谓的,你只需要添加这些行:

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

而不是注销的,你可能会发现更多有用的维护一个全球字典,您可以跟踪从不同地方调用foo()的次数。

+0

如果你想要整个调用堆栈:'print'call stack:%s“%[调用者[2]调用者在traceback.extract_stack()]' –