Python time.clock() - 使用线程重置时钟值
我发现,在Windows上,第一次调用time.clock()时,它会“启动”一个计时器,之后的调用会返回从第一次调用到现在经过的时间。我看到的说法是,重启这个计时器的唯一方法就是启动一个新的进程。
那么,启动和结束线程是否也能重启time.clock()呢?现在似乎并没有正常工作。如果不能的话,唯一的解决办法就是重新启动整个程序吗?
2 个回答
0
如果你不想涉及线程,想要一个可以重置的时钟,使用 time.clock()
会更精确一些,因为它的浮点数比 time.time()
大(这个差别几乎感觉不到)。如果你想在运行一些代码时测量经过的时间,可以试试这个:
t0 = time.clock()
... do something
print('Running time:', time.clock()-t0)
你也可以尝试用函数装饰器来实现这个功能:
def duration(code):
def f(*args):
t0 = time.clock()
bar = code(*args)
print('Running time:', time.clock()-t0)
return bar
return f
之后,你可以用装饰器来定义你的函数:
@duration
def myFun(*args):
... do something
或者直接用装饰器来调用这个函数:
duration(myFun)(*args)
4
线程和进程是两回事,所以,答案是否定的。(顺便提一下,在Python中你不能直接杀死一个线程,你只能请求它退出。通过其他方式杀死线程,如果有这种方式的话,可能会让Python处于一个不好的状态。)
问题在于你为什么想要重置计时器,以及你为什么使用time.clock()
。如果你关心的是两个时间点之间的经过时间,并且这个时间的精确度高到time.time()
不够用的程度,那你只需要用第二个时间点减去第一个时间点就可以了。根本不需要重置。我建议你直接使用time.time()
,除非你真的很在意那一点点精度的差别,因为time.time()
在所有平台上都表现得一样,而time.clock()
就不一定了。