我有一個被調用大約1742次的函數,但是當我做一個裝飾器來計算它的每個調用時間時,我發現它只打印647次,我不知道爲什麼會發生這種情況。Python函數修飾器調用
更新:
我這裏的問題不是如何使呼叫的數量之間的差異定時的,我想辦法做出那樣的有準確調用功能的裝飾。
我的Python版本是2.6,下面是我在http://pastebin.com/MXu1pLWM
工作在分析輸出我發現,調用函數來裝飾函數調用它只有647的模塊,它是唯一的調用函數!!。
想通了!
- 我裝修的功能有一個循環,它與1742年的長度,但給函數的實際調用只有647,但我仍然不明白爲什麼它在呼叫部分,而不是647 :) 說:1742
number = 0
def timing(f):
def wrap(*args):
time1 = time.time()
ret = f(*args)
time2 = time.time()
global number
number+=1
print '%s function took %0.6f ms No of calls: %s' % (f.func_name, ((time2-time1)), str(number))
return ret
return wrap
這是定時函數調用的一種可怕的方式。看看python性能分析器:http://docs.python.org/library/profile.html – ChristopheD 2011-04-04 19:02:37
這不是你如何在Python中進行性能分析。 – 2011-04-04 19:03:13
提供更多證據。裝飾器代碼看起來很好。我不相信你的說法...... – 2011-04-04 19:03:52