function_to_test(test, mylist): #test as an int, mylist as a list of int
do_something
return something
function_generates_a_list(min, max): #min, max are int
do_something
return a_List
我需要对 function_to_test 进行计时,并且只需要对这个进行计时。目的是测试代码以确定是否最适合测试 int 是否在 int 列表中。 (test
是一个 googolplex,mylist
是一个从最小值到最大值的巨大列表)。是的,我已经知道函数的结果,我需要知道它会花费多少次。
我的问题是:如果我想将全局列表作为我测试的函数的本地参数传递,我应该与 timeit 使用哪种语法?
最简单的方法是创建一个不带参数的函数,并使用它需要的任何参数调用您的函数:
mylist = function_generates_a_list()
def newfunc():
function_to_test(mylist)
然后您可以调用timeit(newfunc)
。您还可以使用 lambda 表达式来执行此操作 - timeit(lambda: function_to_test(mylist))
与上述完全相同。如果您使用 timeit
模块(即,执行 python -m timeit ...
),您也可以这样做:
python -m timeit --setup='import mymodule' 'mymodule.newfunc()'
您可以通过使用足够复杂的 setup
字符串来完全避免使用 newfunc
(对 function_generates_a_list
的调用必须在 setup 中,可能(如此处),但不一定是在导入模块时发生,如果您不希望它成为您的计时的一部分),但是拥有该功能可以使事情变得更加灵活并且不那么烦人。
我是一名优秀的程序员,十分优秀!