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% 但如果什么对你很重要是以精确的方式延迟执行它仍然可以为您工作

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.#
等等。如果这没有以您想要的方式提出您的问题,我很抱歉!
添加回答
举报