Python time.sleep()的上限?

问题描述 投票:2回答:6

使用time.sleep()指定线程休眠的时间是否有上限?我一直遇到长时间睡眠(即超过1k秒)的问题。这个问题出现在Windows和Unix平台上。

python time limit sleep
6个回答
5
投票

我想situation described in the docs越有可能的时间越长:

实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止sleep()。此外,由于系统中的其他活动的安排,暂停时间可能比任意量请求的时间长。


8
投票

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

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

这可能比n睡得多,但在最后n秒睡觉前它永远不会恢复。


1
投票

规范说:

暂停执行给定的秒数。参数可以是浮点数,以指示更精确的睡眠时间。实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止sleep()。此外,由于系统中的其他活动的安排,暂停时间可能比任意量请求的时间长。

这里没有时间限制。当然1K秒并不多,应该没有问题。


1
投票

根据文档,time.sleep接受任何非零数字[1],你可能知道。但是,您也受到操作系统调度程序的影响[1]。

[1] http://docs.python.org/library/time.html


0
投票

您可以通过将短暂延迟的睡眠放入循环来防止可能出现的问题:

def sleep(n):
    for i in xrange(n):
        time.sleep(1)

-1
投票

实际答案,至少对我的机器来说:4294967.2950000003911900999 ......秒。

sleep(4294967.2950000003911901)

OverflowError:睡眠长度太大

© www.soinside.com 2019 - 2024. All rights reserved.