我使用python hotshot分析器,它告訴我我的一個方法foo()被調用N次,其中N是比我期望的更大的數字。如何從python hotshot分析模塊獲取方法調用詳細信息?
有沒有辦法獲得有關從哪裏調用foo()的更多細節?理想情況下,模塊名稱和行號列表?我不能只使用grep,我的代碼庫包含很多對foo()的調用,但是我只想找到那些在我在profiler中設置的特定條件下實際執行的代碼。 )
我使用python hotshot分析器,它告訴我我的一個方法foo()被調用N次,其中N是比我期望的更大的數字。如何從python hotshot分析模塊獲取方法調用詳細信息?
有沒有辦法獲得有關從哪裏調用foo()的更多細節?理想情況下,模塊名稱和行號列表?我不能只使用grep,我的代碼庫包含很多對foo()的調用,但是我只想找到那些在我在profiler中設置的特定條件下實際執行的代碼。 )
一種選擇是將一些記錄添加到foo()
頂部,指示了它是從所謂的,你只需要添加這些行:
def foo():
import traceback
print 'foo called from', traceback.extract_stack(limit=2)[0][2]
# previous foo() code
而不是註銷的,你可能會發現更多有用的維護一個全球字典,您可以跟蹤從不同地方調用foo()
的次數。
如果你想要整個調用堆棧:'print'call stack:%s「%[調用者[2]調用者在traceback.extract_stack()]' –
您可以嘗試* [此](http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378#4299378)*。 –
有趣!謝謝邁克。 –