Python time.sleep()的上限是什么?
用time.sleep()让线程休眠的时间有没有上限?我在让我的脚本休眠很长时间(比如超过1000秒)时遇到了一些问题。这种问题在Windows和Unix系统上都出现过。
7 个回答
7
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()
。另外,暂停的时间也可能会比请求的时间长,具体多长取决于系统中其他活动的安排。