我编写了一个小脚本来生成具有不同输入的函数的运行时间。我的意图是绘制这些数字,并向我自己证明这个函数确实有一个二次运行时间。下面的代码:无法使用时间将列表传递给此Python函数
import timeit
seq = [875011, 549220, 400865, 913974, 699921, 108386, 328934, 593902, 805659, 916502, 597662]
subseq = []
num = 1000000 # How many times the algorithm must run
# Quadratic running time
def quad (S):
n = len(S)
A = [0] * n
for j in range(n):
total = 0
for i in range(j+1):
total += S[i]
A[j] = total/(j+1)
return A
def plot_func (name):
print('\n')
for i in range(len(seq)):
subseq = seq[0:i+1]
t = timeit.Timer('{}(subseq)'.format(name), 'from __main__ import {}, subseq'.format(name))
print(t.timeit(number=num))
plot_func('quad')
的问题是,运行时间不会改变,那是因为每次运行时,该功能quad
指全球subseq
,里面是空的。我怎样才能正确地将这个子序列传递给这个函数?
P.S .:我也很好地使用另一个工具来完成这项工作,只要它能给我每次迭代函数的确切运行时间(就CPU时间而言)。
@Rogalski这就是意义我研究过'timeit'示例:需要导入函数名称和变量,以便可以通过'timeit'设置单独的虚拟环境。你有什么建议? – dotslash