如果我有这样的功能:
def print_args(wait=0.4, *args, **kwargs):
print (f"Sleep: {wait}s")
time.sleep(wait)
print (f"Args: {args}")
print (f"Kwargs: {kwargs}")
>>> print_args(0.2, 2, k='a')
Sleep: 0.2s
Args: (2,)
Kwargs: {'k': 'a'}
如何将函数print_args
放入timeit
中?
这有效:
>>> timeit(print_args, number=4)
但是怎么做:
>>> timeit(print_args(0.2, 2, k='a', number=4)
此外,是否有通用的方法可以执行以下操作:
timeit(func(*args, **kwargs), number)
(并且不仅要重写上面的print_args
函数,还要对此模式具有更通用的含义。
更新:注意,我对编写计时器作为函数中的装饰器或从命令行运行内容不感兴趣。我实际上是在问是否可以做这样的事情:
timeit(func(*args, **kwargs), number)
如果the mentioned duplicate出于任何原因直接解决了此问题,请告诉我哪个答案可以解决。我所看到的答案要么建议添加计时器,要么使用“ IPython的%timeit
命令”。这不是我想要做的。
答案 0 :(得分:1)
除非//.addTestDevice("YOUR_DEVICE_ID")
的结果是您想要计时的可呼叫对象,否则func(*args, **kwargs)
显然不会做您想要的事情。将调用换成lambda或函数:
timeit(func(*args, **kwargs), number)