Python time.clock() - 用线程重置时钟值

时间:2010-04-19 19:44:05

标签: python time reset clock

我看到Windows上的time.clock()在第一次调用时启动了一个定时器,并返回自此之后第一次调用调用以来的elasped时间。我读到重启时钟的唯一方法是启动一个新进程。

启动和杀死线程应该重启time.clock()吗?它现在似乎不起作用。如果没有,是重新启动整个可执行文件的唯一解决方案吗?

2 个答案:

答案 0 :(得分:4)

线程不是进程,所以,不。 (作为一个小问题,你不能在Python中杀死一个线程,你只能要求它退出。通过其他方式杀死线程,即使存在这样的手段,也可能使Python处于不良状态。)

问题是为什么要重置计时器,以及使用time.clock()的原因。如果您关注两个点之间经过的时间,如果time.time()不合适,那么您需要从第二个点中减去第一个点。无需重置。我建议只使用time.time(),除非你真的关心粒度的这一点差异,因为time.time()在所有平台上的工作方式相同,与time.clock()相反。

答案 1 :(得分: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)