如何在python中准确地暂停设置的时间长度。
我尝试过:
import time
time.sleep(amount)
(数量=时间长度小于1秒)
但这不是很准确,还有什么更好的办法吗?
(Windows 10、64位)
答案 0 :(得分:1)
sleep永远不会比操作系统的滴答频率更准确,对于Windows,它处于10ms-16ms范围内,而在Linux中,它可以低至1ms(具体取决于操作系统),但通常会更高,就像Windows < / p>
如果您想要更高精度的睡眠,并且如果您使用的是Linux,则可以考虑使用nanosleep()
,它是一个高精度的睡眠函数,不幸的是,任何内置库中的python都不会公开它-因此您将需要创建一个小的.so文件,将其公开给python(通过将其与ctypes一样导入,或者通过使用cpython制作C python模块),根据文档的功能将与计时器本身一样精确>
还有一些针对Windows的高精度解决方案-但我从未使用过它们中的任何一个,因此我没有资格推荐在Windows上使用的解决方案(但同样,您将需要一个.dll来将此类方法公开给python)>
话虽如此,如果您不关心用电量,您可以忙着睡:
import time
def busy_sleep(seconds_to_sleep):
start = time.time()
while (time.time() < start + seconds_to_sleep):
pass
然后您可以像这样busy_sleep(0.005)
来称呼它,它将几乎准确地“睡眠” 0.005秒,因为空气中的“ sleep”实际上并没有使您一直处于睡眠状态,因此一直在忙于100%,但如果对您而言重要的是以精确的方式延迟执行,它仍然可能对您有用
答案 1 :(得分:0)
您尝试过吗? 如果我使用time.sleep(1),它将等待一秒钟。 所以,
time.sleep(0.33333333333)
# a third of a second pause.#
time.sleep(0.5)
# a half of a second pause.#
,依此类推。很抱歉,如果这没有按照您的意愿提出您的问题!