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

如何让线程中while循环在stop_event触发时立即退出,无需等待sleep完成?

解决方案

核心问题在于time.sleep()无法被线程事件中断,你需要用threading.Event自带的wait()方法替代它,这个方法既支持超时等待,又能在事件被触发时立即返回。

修改后的代码如下:

while not stop_event.is_set():
    # 用wait替代sleep,超时600秒,事件触发时会立即返回
    stop_event.wait(600)
    # 再次检查事件状态,若已设置则直接退出循环
    if stop_event.is_set():
        break
    response = requests.get(api_url, headers=headers, params=params)
    if response.status_code == 200:
        print("UPDATED")
    else:
        print("NOT UPDATED")

关键说明:

  • stop_event.wait(600):该方法会阻塞当前线程,直到两种情况之一发生:一是stop_event被设置(此时返回True),二是等待满600秒超时(此时返回False)。
  • 每次wait后先检查事件状态,确保事件一旦触发,立刻跳出循环,不会执行后续的网络请求逻辑。

这样就能实现stop_event被设置后立即退出循环的需求,无需再等待sleep结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:22:08