我有一个被调用大约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