Windows上有替代的精确定时器吗?
在某些虚拟机平台上运行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
的功能,这个功能据说可以在当前系统上返回最准确的时间测量方式。