Python';s timeit(…)方法在这段代码中的实际时间是多少?

Python';s timeit(…)方法在这段代码中的实际时间是多少?,python,timeit,Python,Timeit,我想测量A0算法在大小为n的列表上完成其任务所需的时间,但我找不到生成列表并将其作为变量传递给timeit.timeit(…)方法的方法。计时器只测量A0完成所需的时间,还是列表生成也包括在测量中 它将测量语句中所有内容的执行时间(第一个参数),因此如果您只想测量对A0的调用,那么列表创建将扭曲结果 尝试在安装程序中创建列表: timeit.timeit("A0([randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")])

我想测量A0算法在大小为n的列表上完成其任务所需的时间,但我找不到生成列表并将其作为变量传递给timeit.timeit(…)方法的方法。计时器只测量A0完成所需的时间,还是列表生成也包括在测量中

它将测量语句中所有内容的执行时间(第一个参数),因此如果您只想测量对A0的调用,那么列表创建将扭曲结果

尝试在安装程序中创建列表:

timeit.timeit("A0([randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")])", setup="from HW2 import A0", number=1000000)

该列表仅在计时器开始时创建一次,不包括在计时中

列表生成时间将包括在内(无论调用timeit时引号之间是什么)。

那么有没有办法将该列表作为变量传入呢?我刚才向您展示了。在设置中执行此操作。它将在声明中提供。或者将其作为导入A0时附带的变量,没有问题。如果您查看ipython,它有一个非常棒的timeit集成,它允许您在运行任何语句时完全访问变量和函数的范围。如果这解决了您的问题,请不要忘记打勾!
timeit.timeit("A0(aList)", setup="from HW2 import A0; aList = [randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")] ", number=1000000)