2011-11-09 25 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()]' –