【问题标题】:Python time.clock() - reset clock value with threadsPython time.clock() - 使用线程重置时钟值
【发布时间】:2011-02-09 20:23:09
【问题描述】:

我看到 Windows 上的 time.clock() 在第一次调用时会“启动”一个计时器,并返回自第一次调用之后经过的时间。我读到重新启动时钟的唯一方法是启动一个新进程。

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

【问题讨论】:

    标签: python time reset clock


    【解决方案1】:

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

    问题是为什么你要重置计时器,以及你为什么要使用time.clock()。如果您关心两点之间的间隔时间太高以至于time.time() 不合适,您只需从第二点中减去第一点。无需重置。我建议只使用time.time(),除非您真的关心粒度上的细微差别,因为time.time() 在所有平台上的工作方式都相同,而time.clock() 则相反。

    【讨论】:

    • 我正在尝试测量串行通信之间的响应,所以是的,我想使用 time.clock()。我将继续减去这两个值以找出差异。感谢您的回答
    【解决方案2】:

    如果你想要一个时钟,你可以将线程分开,你可以用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)
    

    【讨论】:

      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 2013-10-24
      • 2015-04-07
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多