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

如何在后台子进程失败时触发Python异常?

解决方案

你可以通过后台线程监控子进程状态来实现需求:主线程无需等待子进程完成,同时由专门的线程负责等待子进程结束并检查退出码,一旦子进程异常退出就触发错误(抛出异常或直接终止程序)。

具体实现代码如下:

import subprocess
import threading

def monitor_process(process):
    # 等待子进程执行完成
    process.wait()
    # 非0返回码表示子进程异常退出
    if process.returncode != 0:
        raise Exception(f"子进程异常退出,返回码: {process.returncode}")

# 启动后台子进程
process = subprocess.Popen(["script.sh"])

# 启动监控线程,不阻塞主线程
monitor_thread = threading.Thread(target=monitor_process, args=(process,), daemon=True)
monitor_thread.start()

# 主线程继续执行自身业务逻辑
print("主线程正常运行...")
# 此处编写你的其他代码

补充说明

  • 设置daemon=True将监控线程设为守护线程,主线程结束时该线程会自动退出,避免残留无用线程。
  • 如果你希望子进程失败时直接让整个程序崩溃,可替换监控函数的逻辑,直接终止程序:
import sys

def monitor_process(process):
    process.wait()
    if process.returncode != 0:
        print(f"致命错误:子进程异常退出,返回码: {process.returncode}", file=sys.stderr)
        sys.exit(1)
  • 这种方式既保证了主线程无需等待子进程,又能在极端错误场景下及时终止程序,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:52:06