Python 用我自己的函数给程序计时
Python time the procedure by my own function
我在这里定义了一个函数来计算'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
timeit(f1())
在 将其 return 值传递给 timeit
之前调用 f1
,因此您实际测量的是只是调用 time.clock
两次的开销。
您需要传递函数本身并在timeit
中调用它,在调用[=17=之间] ]:
def timeit(p):
a=time.clock()
p() # call it here
b=time.clock()
print(b-a)
timeit(f1) # NOT here
如果稍后需要传递参数,可以使用 *args / **kwargs
或
将 timeit
重写为 decorator.
def timeit(func, *args, **kwargs):
a = time.clock()
func(*args, **kwargs)
b = time.clock()
print(b - a)
这是错误的,因为您的代码 f1()
实际上并没有在两个 clock()
命令之间得到 运行。 f1()
在调用 timeit
之前被计算,而不是在调用中。有关详细信息,请参阅 here。
我在这里定义了一个函数来计算'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
timeit(f1())
在 将其 return 值传递给 timeit
之前调用 f1
,因此您实际测量的是只是调用 time.clock
两次的开销。
您需要传递函数本身并在timeit
中调用它,在调用[=17=之间] ]:
def timeit(p):
a=time.clock()
p() # call it here
b=time.clock()
print(b-a)
timeit(f1) # NOT here
如果稍后需要传递参数,可以使用 *args / **kwargs
或
将 timeit
重写为 decorator.
def timeit(func, *args, **kwargs):
a = time.clock()
func(*args, **kwargs)
b = time.clock()
print(b - a)
这是错误的,因为您的代码 f1()
实际上并没有在两个 clock()
命令之间得到 运行。 f1()
在调用 timeit
之前被计算,而不是在调用中。有关详细信息,请参阅 here。