我只是在python中使用timeit
来玩玩,下面的代码可以正常工作:
def mysleep(n):
import time
time.sleep(n)
import timeit
for k in range (1,5):
def mytime():
mysleep(k)
t1 = timeit.Timer("mytime();", "from __main__ import mytime")
print k, t1.timeit(1)
但是如果我把相同的代码放在一个函数中,对于每个k
的时间大约是3秒。在
为什么我在函数中的代码不能工作?我如何修复它?在
setup语句从模块globals导入
mytime()
,但您在函数局部变量中定义了要测试的函数。因此,setup语句要么失败(如果没有globalmytime()
函数),要么导入错误的对象。在在您的例子中,您必须还有一个全局
mytime()
函数,每次调用它都需要3秒钟的时间。在timeit.Timeit()
也可以将callables作为参数,而不是字符串;直接传入mytime()
函数:现在不需要导入对象。这只适用于不带参数的可调用项,使用这样的函数会给所有定时调用增加一个小开销。在
相关问题 更多 >
编程相关推荐