子流程-直接获取孩子的异常

时间:2019-12-08 20:12:24

标签: python-3.x subprocess

我想获得有关孩子中可能出现的异常的更多信息。我知道可以通过查看如下的stderr来完成:

try:
    completed_process = subprocess.run(['python3', 'test.py'], capture_output=True, check=True)
except subprocess.CalledProcessError as e:
    print(e.stderr)

但是,我想知道我是否可以直接在孩子中提出异常,例如ModuleNotFoundError

替代方法:一些用于解析原始stderr的工具。

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为用于派生/联接的处理工具除了返回代码以及可能导致退出的OS信号外,不知道任何细节。

如果您想要像异常一样的进程内详细信息,则实际上是在寻找线程

线程化是在相同逻辑进程中使子例程具有并行性的一种方式,它使您可以捕获进程中的详细信息,例如异常。

对于python3,详细信息在这里:https://docs.python.org/3/library/threading.html