Python time.sleep()的上限是什么?

9 投票
7 回答
22338 浏览
提问于 2025-04-15 17:15

用time.sleep()让线程休眠的时间有没有上限?我在让我的脚本休眠很长时间(比如超过1000秒)时遇到了一些问题。这种问题在Windows和Unix系统上都出现过。

7 个回答

7

这个在3.5版本中发生了变化:

time.sleep(*secs*): 这个函数现在会至少暂停secs秒,即使在暂停期间收到了信号打断,除非这个信号处理程序抛出了一个异常(想了解更多可以查看PEP 475)。

12

其他人已经解释了为什么你可能会睡得比你要求的时间少,但没有告诉你该怎么处理这个问题。如果你想确保至少睡 n 秒钟,可以使用下面的代码:

from time import time, sleep
def trusty_sleep(n):
    start = time()
    while (time() - start < n):
        sleep(n - (time() - start))

这段代码可能会让你睡得超过 n 秒,但它绝对不会在睡眠时间少于 n 秒的情况下返回。

8

我想时间越长,出现文档中描述的情况的可能性就越大:

实际的暂停时间可能会比你请求的时间短,因为如果有信号被捕获,会在执行那个信号的处理程序后终止 sleep()。另外,暂停的时间也可能会比请求的时间长,具体多长取决于系统中其他活动的安排。

撰写回答