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可能重复,请查看我的问题更新。