这些函数可以使用参数timeit
如果它们是使用闭包创建的,我们可以通过将它们包装在另一个函数中来添加此行为。
def foo(num1, num2):
def _foo():
# do something to num1 and num2
pass
return _foo
A = 1
B = 2
import timeit
t = timeit.Timer(foo(A,B))
print(t.timeit(5))
或者更短,我们可以使用functools.partial https://docs.python.org/3/library/functools.html而不是显式的闭包声明
def foo(num1, num2):
# do something to num1 and num2
pass
A = 1
B = 2
import timeit, functools
t = timeit.Timer(functools.partial(foo, A, B))
print(t.timeit(5))
使用 lambda 进行编辑,谢谢@jupiterbjy
我们可以使用不带参数的 lambda 函数来代替 functools 库
def foo(num1, num2):
# do something to num1 and num2
pass
A = 1
B = 2
import timeit
t = timeit.Timer(lambda: foo(A, B))
print (t.timeit(5))