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

Python中如何持续执行代码直到另一函数返回指定值?

问题根因

当前代码是单线程同步执行模式:主循环打印一次Running后就会同步调用foo(),而foo()内部的sleep(3)会直接阻塞整个主线程,这3秒内程序无法执行任何其他操作(包括继续打印),必须等foo()执行完毕返回结果后,才会继续走后续判断逻辑,自然做不到持续输出Running的效果。

修复方案

把耗时阻塞的foo()放到独立的后台子线程执行,主线程不受阻塞保持循环打印Running,同时定期检查foo()的执行状态,等它返回True时就打印结束提示并退出循环。

修复后可直接运行的代码:

from time import sleep
import threading

foo_return = None

def foo():
    sleep(3)
    return True

def async_foo():
    global foo_return
    foo_return = foo()

# 启动守护线程执行foo,主线程退出时子线程自动终止
threading.Thread(target=async_foo, daemon=True).start()

while True:
    print('Running')
    # 加100ms间隔避免无意义的高频打印占满CPU
    sleep(0.1)
    if foo_return is True:
        print('Finished.')
        break

运行这段代码会看到程序持续打印Running,3秒后自动打印一次Finished然后退出,完全符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:24:25