为了账号安全,请及时绑定邮箱和手机立即绑定

在python中准确睡眠()不到一秒钟

在python中准确睡眠()不到一秒钟

慕妹3242003 2021-06-01 17:49:05
如何在 python 中准确地暂停一段时间。我试过了:import time time.sleep(amount)(数量 = 小于 1 秒的时间长度)但是这不是很准确,还有什么更好的吗?(Windows 10 64 位)
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

sleep 永远不会比操作系统的滴答率更准确,对于 Windows,它在 10ms-16ms 范围内的某个地方,在 linux 中它可以低至 1ms,具体取决于操作系统,但通常它会像 windows 一样更高


如果您想要更高精度的睡眠,并且您使用的是 linux,则可以考虑使用nanosleep()which 是高精度睡眠函数,不幸的是,python 在任何内置库中都没有公开该函数-因此您需要创建一个小的 .so 文件将它暴露给 python(通过使用 ctypes 按原样导入它或通过使用 cpython 制作 C python 模块)根据文档,此函数将与计时器本身一样精确


也有适用于 Windows 的高精度解决方案 - 但我从来没有使用过它们中的任何一个,所以我没有资格推荐在 Windows 上使用什么(但你再次需要一个将这些方法暴露给 python 的 .dll)


综上所述,如果您不关心电源使用情况,您可以忙着睡觉:


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 秒“睡眠”是在空气引号中,因为你并没有真正睡着,你一直让 CPU 一直忙于 100% 但如果什么对你很重要是以精确的方式延迟执行它仍然可以为您工作


查看完整回答
反对 回复 2021-06-09
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你试过这个吗?如果我使用 time.sleep(1) 它会等待一秒钟。所以,


time.sleep(0.33333333333) 

# a third of a second pause.#

time.sleep(0.5)

# a half of a second pause.#

等等。如果这没有以您想要的方式提出您的问题,我很抱歉!


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号