Python 将timeit与args、kwargs一起使用
如果我有这样一个函数:Python 将timeit与args、kwargs一起使用,python,Python,如果我有这样一个函数: 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'} t
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'}
timeit(func(*args, **kwargs), number)
如何将函数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
函数,还要为该模式提供更通用的功能
更新:注意,我不想在函数中编写一个计时器作为装饰器,也不想从命令行运行一些东西。我只是想问问是否可以这样做:
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'}
timeit(func(*args, **kwargs), number)
如果出于任何原因直接解决了这个问题,请告诉我哪个答案是这样的。我看到的答案要么建议添加一个计时器,要么使用“IPython的
%timeit
命令”。这不是我想要做的。除非func(*args,**kwargs)
的结果是你想调用的时间,timeit(func(*args,**kwargs),number)
显然不能满足您的要求。请将调用包装在lambda或函数中:
timeit(lambda: func(*args, **kwargs), number)
@MyNameIsCaleb可能重复,请查看我的问题更新。