Python时间的上限。sleep()?
指定线程随时间睡眠的时间是否有上限。sleep()?我在长时间(即超过1k秒)睡眠脚本方面一直存在问题。这个问题在Windows和Unix平台上都出现过。我想时间越长,可能性越大: 实际暂停时间可能小于请求的暂停时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止Python时间的上限。sleep()?,python,time,limit,sleep,Python,Time,Limit,Sleep,指定线程随时间睡眠的时间是否有上限。sleep()?我在长时间(即超过1k秒)睡眠脚本方面一直存在问题。这个问题在Windows和Unix平台上都出现过。我想时间越长,可能性越大: 实际暂停时间可能小于请求的暂停时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止sleep()。此外,由于系统中其他活动的调度,暂停时间可能比请求的时间长任意数量 根据文档,time.sleep接受任何非零数字[1],您可能知道。但是,您也受到操作系统调度程序的影响[1] [1] 您可以通过在循环中加入短延迟睡
sleep()
。此外,由于系统中其他活动的调度,暂停时间可能比请求的时间长任意数量
根据文档,time.sleep接受任何非零数字[1],您可能知道。但是,您也受到操作系统调度程序的影响[1]
[1] 您可以通过在循环中加入短延迟睡眠来防止可能出现的问题:
def sleep(n):
for i in xrange(n):
time.sleep(1)
其他人解释了为什么你可能睡得比你要求的少,但没有告诉你如何处理这个问题。如果需要确保睡眠时间至少为n秒,可以使用以下代码:
from time import time, sleep
def trusty_sleep(n):
start = time()
while (time() - start < n):
sleep(n - (time() - start))
从时间导入时间,睡眠
def trusty_睡眠(n):
开始=时间()
同时(时间()-开始
这可能会休眠超过n秒,但在休眠至少n秒之前它不会返回。实际答案,至少对于我的机器: 4294967.2950000003911900999... 秒
sleep(4294967.2950000003911901)
溢出错误:睡眠时间太长:
time.sleep(*secs*):
即使
睡眠被信号中断,除非信号处理程序触发
例外情况(参见基本原理)是的,有一个上限:当有人在您机器的电源线上绊倒时;-)你有什么“问题”?具体一点。我猜这是特定于平台的,但我没有足够的知识来证明任何东西。复制和粘贴的奇迹。。。(见eliben的回答)。但是,+1表示包含链接的源代码。@Boldewyn:只是因为我的firefox冻结了3秒,然后是eli。@Boldewyn:但是我们提供了不同的评估。除了可能的等待时间外,似乎还有一个硬限制,版本不同。抱歉,在发布之前没有看到其他答案。这稍微好一点,但是,如果sleep()调用提前中断,它的睡眠时间仍可能少于n;而time.time()