我认为修改后的time_algo()符合您的要求:def time_algo(sort_fun, input_seq, num=100):
'''
Time how long it takes to sort sequence 'input_seq' using
function 'sort_fun'. Take min of 'num' times.
'''
foo = list(input_seq)
wrapped = wrapper(sort_fun, foo)
def reset_foo():
foo[:] = list(input_seq)
return min(timeit.timeit(wrapped, setup=reset_foo, number=1) for _ in range(num))
这将在每次timeit()之前将输入_seq重新复制到list foo。有一些不那么花哨/更多手动的方法可以更通用:您可以编写一个普通的循环来复制输入,生成一个新的包装器,并调用timeit。在
。。。但正如上面所说的,你真的希望每次都有多个迭代,为此你真的想为一个不修改输入的函数计时。在