Python time.sleep()的上限?

Sha*_*ddi 2 python time sleep limit

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

sam*_*gar 8

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

from time import time, sleep
def trusty_sleep(n):
    start = time()
    while (time() - start < n):
        sleep(n - (time() - start))
Run Code Online (Sandbox Code Playgroud)

这可能比n睡得多,但在睡眠至少n秒之前它永远不会恢复.


小智 7

这在 3.5 版本中发生了变化

time.sleep(*secs*):即使睡眠被信号中断,该函数现在也至少睡眠 几秒,除非信号处理程序引发异常(有关基本原理,请参阅PEP 475 )


小智 6

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

sleep(4294967.2950000003911901)
Run Code Online (Sandbox Code Playgroud)

OverflowError:睡眠长度太大

  • 您是如何获得该号码的? (11认同)

Sil*_*ost 5

我想文档中描述的可能情况越多,时间越长:

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