我想获得有关孩子中可能出现的例外的更多信息。我知道可以通过如下查看stderr来完成:
try:
completed_process = subprocess.run(['python3', 'test.py'], capture_output=True, check=True)
except subprocess.CalledProcessError as e:
print(e.stderr)
但是,我想知道是否可以直接在孩子中引发异常,例如ModuleNotFoundError
?
替代:一些用于解析原始标准错误的工具。
这是不可能的,因为用于派生/加入的处理工具除了返回代码以及可能导致退出的OS信号之外,都不知道任何细节。
如果您想要进程内的详细信息,例如异常,您实际上正在寻找threading。
线程是在同一逻辑进程中使子例程具有并行性的一种方式,这将使您可以捕获进程中的详细信息,例如异常。
对于python3,详细信息在这里:https://docs.python.org/3/library/threading.html