Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python时间的上限。sleep()?_Python_Time_Limit_Sleep - Fatal编程技术网

Python时间的上限。sleep()?

Python时间的上限。sleep()?,python,time,limit,sleep,Python,Time,Limit,Sleep,指定线程随时间睡眠的时间是否有上限。sleep()?我在长时间(即超过1k秒)睡眠脚本方面一直存在问题。这个问题在Windows和Unix平台上都出现过。我想时间越长,可能性越大: 实际暂停时间可能小于请求的暂停时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止sleep()。此外,由于系统中其他活动的调度,暂停时间可能比请求的时间长任意数量 根据文档,time.sleep接受任何非零数字[1],您可能知道。但是,您也受到操作系统调度程序的影响[1] [1] 您可以通过在循环中加入短延迟睡

指定线程随时间睡眠的时间是否有上限。sleep()?我在长时间(即超过1k秒)睡眠脚本方面一直存在问题。这个问题在Windows和Unix平台上都出现过。

我想时间越长,可能性越大:

实际暂停时间可能小于请求的暂停时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止
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()