我认为这个修改了
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()之前将input_seq重新复制到listfoo。有更少的花哨/更多的手动方式可以更通用:您可以编写一个简单的循环来复制输入,创建一个新的包装器,并调用timeit。
…但正如上面所评论的,您确实需要每次迭代多次,因此,您确实希望对一个不修改其输入的函数进行计时。