用Python测量时间

尼科达姆

我有一个功能,可以测量其他功能的持续时间并将其保存在特定文件中:

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时,请先进行深层复制,或使用元组代替列表。(建议使用后者)。

选项1 :

def timeandsave(n, function, some_list, index=0):
  start=0
  my_list = copy.deepcopy(some_list)
  gen(n, my_list)
  #etc logic
  return end

选项2:

def timeandsave(n, function, some_tuple, index=0):
  start=0
  #etc logic

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章