【问题标题】:Is there an alternative precise timer to time.clock() on Windows?Windows 上是否有替代 time.clock() 的精确计时器?
【发布时间】:2013-03-15 16:11:17
【问题描述】:

在某些虚拟机平台的 Windows 中运行,Python 的 time.clock() 函数不准确。
我使用以下测试脚本在几个不同的平台上进行了一些测试:

import datetime
import time
import timeit

startClock = time.clock()
startTime = time.time()

while (True):
    currentClock = time.clock()
    currentTime = time.time()

    clockDiff = currentClock - startClock
    timeDiff = currentTime - startTime

    print (datetime.datetime.now())
    print ('time.clock() Seconds: %s' % str(clockDiff))
    print ('time.time() Seconds:  %s' % str(timeDiff))
    print ('Diff:              %s' % str(clockDiff - timeDiff))
    print ''

    time.sleep(5)

根据我在哪个虚拟机平台上运行,clockDiff 和 timeDiff 之间的差异差异很大。我试用了 Parallels Desktop 8 for Mac、VMWare Fusion 5 和 Hyper-V。

this related question。问题在于管理程序如何处理低级 QueryPerformanceCounter 函数。

我希望我的时间准确无误,无论这可能运行在什么虚拟机管理程序上。我可以只使用 time.time(),虽然它没有我从 time.clock() 获得的精度。

是否有 time.clock() 的替代计时器可以提供相同的精度?我在 Windows 上运行 Python 2.7。

谢谢!

【问题讨论】:

    标签: python windows time python-2.7 virtual-machine


    【解决方案1】:

    timeit 提供了default_timer,据说它返回了当前系统上最准确的便携式计时机制。

    【讨论】:

    • 在 Windows 上,timeit.default_timer() 使用 time.clock()。据我所知,timeit.default_timer() 是为了获得最精确的计时器,而不是最精确的计时器。
    猜你喜欢
    • 2010-09-08
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多