You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在包含sleep函数的while循环中实现定时终止?

在含sleep的while循环中实现定时停止

当while循环里调用sleep时,程序会进入暂停状态,这段时间没法执行循环内的条件判断——哪怕超时时间到了,也得等sleep跑完才能退出,导致退出延迟。

原写法的问题

比如下面的代码,明明设置了10分钟超时,但如果超时时间刚好落在两次sleep的执行过程中,程序必须等两次sleep(合计40秒)全部完成后,才会检查到超时并退出:

import time

# 超时设置为10分钟
timeout = time.time() + 60 * 10

while True:
    if time.time() >= timeout:
        break
    # 执行操作
    time.sleep(20)
    # 执行操作
    time.sleep(20)

更及时的停止方案

如果想要尽可能快地响应超时,避免长时间延迟,可以把长sleep拆成多个短sleep,每次sleep一小段后就检查一次超时条件:

import time

# 超时设置为10分钟
timeout = time.time() + 60 * 10
# 每次短sleep的时长(可根据需求调整)
short_sleep = 1
# 单次循环内需要的总sleep时长
total_sleep_time = 40

while True:
    if time.time() >= timeout:
        break
    # 执行第一个操作
    
    # 拆分长sleep为多次短间隔,每次后检查超时
    elapsed_sleep = 0
    while elapsed_sleep < total_sleep_time and time.time() < timeout:
        time.sleep(short_sleep)
        elapsed_sleep += short_sleep
    
    # 执行第二个操作

这种写法下,一旦超时时间到了,最多只会延迟1秒就退出循环,不会出现几十秒的滞后。

内容的提问来源于stack exchange,提问作者Lindenbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:20:17