我有一个功能,可以测量其他功能的持续时间并将其保存在特定文件中:
def timeandsave(n, function, some_list, index=0):
start=0
gen(n, some_list)
start = time.time()
function(some_list)
end = time.time() - start
print 'Time: ' + str(end)
plik = open('Sort' + str(n) + '_ind' + str(index) + '_result.txt', 'a')
plik.write(str(end) + '\n')
plik.close()
return end
现在,当我使用例如:
timeandsave(10000, quick_sort_r, list, 1)
答案是正确的:
Time: 0.166000127792
但是,当我想在循环中几次使用它时,它会打印并保存总计的结果:
Input:
for i in range(0, 5):
timeandsave(10000, quick_sort_r, list, 1)
Output:
Time: 0.173000097275
Time: 0.375999927521
Time: 0.577000141144
Time: 0.772000074387
Time: 0.962000131607
有什么建议吗?
首先看看这个链接:http : //docs.python.org/2/library/timeit.html
现在输入代码:
在主程序中,您将列表作为参数传递,该列表被分配给参数的some_list。现在,如果您修改some_list; 甚至列表也会被修改。
最有可能在您使用gen()时,您正在修改some_list的大小,进而修改“ list”本身。
当您将列表传递给some_copy时,请先进行深层复制,或使用元组代替列表。(建议使用后者)。
def timeandsave(n, function, some_list, index=0):
start=0
my_list = copy.deepcopy(some_list)
gen(n, my_list)
#etc logic
return end
def timeandsave(n, function, some_tuple, index=0):
start=0
#etc logic
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句