我喜欢能够测量我编写的 python 函数的性能,所以我经常做类似的事情......
import time
def some_function(arg1, arg2, ..., argN, verbose = True) :
t = time.clock() # works best in Windows
# t = time.time() # apparently works better in Linux
# Function code goes here
t = time.clock() - t
if verbose :
print "some_function executed in",t,"sec."
return return_val
是的,我知道您应该使用 timeit 来衡量性能,但这对我的需求来说很好,并且允许我打开和关闭这些信息以便非常顺利地进行调试。
这段代码当然是在我了解函数装饰器之前......我现在对它们了解不多,但我认为我可以使用 **kwds 字典编写一个执行以下操作的装饰器:
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, verbose = True) # Times function
尽管如此,我还是想复制我之前的函数工作,以便工作更像:
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, False) # Does not time function
some_function(arg1, arg2, ..., argN, True) # Times function
我想这将需要装饰器计算参数的数量,知道原始函数将占用多少,去掉多余的,将正确的数量传递给函数......我不确定如何告诉 python要做到这一点...有可能吗?有没有更好的方法来实现同样的目标?