我在这里定义了一个函数来计算程序p所花费的时间
def timeit(p):
a=time.clock()
p
b=time.clock()
print(b-a)
然后我用另一个函数来测试它
d=pd.DataFrame({'x':np.random.randint(1,100,10000)})
d['s']=None
def f1():
for i in range(10000):
if d.iloc[i,0]<60:
d.iloc[i,1]='under'
elif d.iloc[i,0]<80:
d.iloc[i,1]='ok'
else:
d.iloc[i,1]='best'
使用我的时间:
timeit(f1())
5.140552730154013e-07
结果是完全错误的。为什么?我的语法有问题吗? 真正的时间是:
a=time.clock()
f1()
b=time.clock()
b-a
Out[26]: 5.914697663515881
这是错误的,因为您的代码
f1()
实际上没有在两个clock()
命令之间运行f1()
在调用timeit
之前进行求值,而不是在调用内。有关详细信息,请参见heretimeit(f1())
在将其返回值传递给timeit
之前调用f1
,因此实际测量的只是调用time.clock
两次的开销您需要传递函数本身并在
timeit
中调用它,在调用time.clock()
之间:如果以后需要传递参数,可以使用
*args / **kwargs
或 将timeit
重写为decorator相关问题 更多 >
编程相关推荐