Windows上有替代的精确定时器吗?

3 投票
1 回答
1642 浏览
提问于 2025-04-17 19:13

在某些虚拟机平台上运行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之间的差异非常大。我尝试了Mac上的Parallels Desktop 8、VMWare Fusion 5和Hyper-V。

可以参考这个相关问题。问题出在虚拟机管理程序如何处理底层的QueryPerformanceCounter函数。

我希望我的计时是准确的,不管这个程序运行在哪个虚拟机管理程序上。我可以使用time.time(),但它的精度没有time.clock()高。

有没有其他的计时方法可以替代time.clock(),并且能提供同样的精度?我在Windows上运行Python 2.7。

谢谢!

1 个回答

3

timeit 提供了一个叫 default_timer 的功能,这个功能据说可以在当前系统上返回最准确的时间测量方式。

撰写回答