Python的timeit(...)方法在这段代码中的实际时间代码是什么代码?

时间:2012-10-13 05:37:26

标签: python timeit

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

我想测量A0算法在大小为n的列表上完成其作业所花费的时间,但我找不到生成列表的方法,然后将其作为变量传递给timeit.timeit (...) 方法。定时器是否仅测量A0完成所需的时间,或者列表生成是否也包含在测量中?

2 个答案:

答案 0 :(得分:3)

它将测量语句中所有内容的执行时间(第一个arg),因此如果您只想测量对A0的调用,那么列表创建将会使结果产生偏差。

尝试在设置中创建列表:

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)

列表将仅在计时器开始时创建一次,并且不包括在计时中。

答案 1 :(得分:0)

将包括列表生成时间(调用timeit时引号之间的任何内容)。