gpt4 book ai didi

python - 如何将列表作为参数函数传递到 Python 3.2.3 中的 timeit 调用中?

转载 作者:太空宇宙 更新时间:2023-11-03 19:16:43 25 4
gpt4 key购买 nike

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 中,可能(如此处),但不一定是在导入模块时发生,如果您不希望它成为您的计时的一部分),但是拥有该功能可以使事情变得更加灵活并且不那么烦人。

关于python - 如何将列表作为参数函数传递到 Python 3.2.3 中的 timeit 调用中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com