Python如何实现函数调用后延迟x秒执行且不阻塞主程序
原代码的问题是直接在主线程调用fun_1,其中的time.sleep会阻塞当前主线程,导致后续打印语句必须等延迟结束才能执行。你需要的是单次非阻塞延迟执行,不需要周期调度能力,直接用Python标准库threading开独立子线程跑延迟逻辑即可,无需安装第三方依赖。
修改后可直接运行的代码
import time import threading def fun_1(tim): time.sleep(tim) print("Be kind : ) ") def fun_2(): # 启动独立子线程执行延迟任务,不会阻塞当前主线程 threading.Thread(target=fun_1, args=(2,), daemon=True).start() print(" Be Honest ") print("After 2 secs") if __name__ == "__main__": fun_2() # 仅用于演示时保证子线程延迟任务能执行完,常驻业务程序不需要加这行 time.sleep(3)
运行效果
- 程序启动后无卡顿,立刻输出
Be Honest、After 2 secs两行内容 - 等待2秒后,子线程延迟结束,自动输出
Be kind : ) - 整个延迟等待过程完全不会阻塞主流程其他代码执行
参数说明
target=fun_1:指定子线程要运行的目标函数args=(2,):传入目标函数的位置参数,对应fun_1的入参timdaemon=True:标记线程为守护线程,主线程退出时会自动终止该线程,避免程序无法正常退出;如果你的场景要求主程序必须等延迟任务执行完再退出,移除该参数即可
内容的提问来源于stack exchange,提问作者Ahtesham Khan
相关产品推荐
相关产品推荐

