在 python 中,如何检查子进程是否正常退出或出错?
In python, how can I check if a child process exited cleanly or with an error?
我有一些这样的代码
import multiprocessing as mp
processes = []
for i in range(10):
p = mp.Process(target=my_func, args=args)
processes.append(p)
p.start()
for p in processes:
p.join()
如果 my_func
中存在导致所有线程崩溃的错误,那么我希望我的父进程检测到该错误并抛出异常。如何在加入进程时检测进程是否干净退出?
读取进程的值'exitcode
:
None
如果进程尚未完成。
0
如果进程成功结束。
N
如果进程出错,并以代码 N 退出。
-N
如果进程被信号 N
杀死。 (例如 -15 如果被 SIGTERM
杀死)
比如在你的主进程中:
for p in processes:
p.join()
if p.exitcode > 0:
raise ValueError(f'a process exited with code {p.exitcode}')
在你的可运行文件中:
try:
do_something()
except KnownError as _:
exit(my_known_error_code)
您可以在调用 join()
后检查退出代码。
例如:
for p in processes:
p.join()
if p.exitcode is not 0:
exit(1)
参考:
我有一些这样的代码
import multiprocessing as mp
processes = []
for i in range(10):
p = mp.Process(target=my_func, args=args)
processes.append(p)
p.start()
for p in processes:
p.join()
如果 my_func
中存在导致所有线程崩溃的错误,那么我希望我的父进程检测到该错误并抛出异常。如何在加入进程时检测进程是否干净退出?
读取进程的值'exitcode
:
None
如果进程尚未完成。0
如果进程成功结束。N
如果进程出错,并以代码 N 退出。-N
如果进程被信号N
杀死。 (例如 -15 如果被SIGTERM
杀死)
比如在你的主进程中:
for p in processes:
p.join()
if p.exitcode > 0:
raise ValueError(f'a process exited with code {p.exitcode}')
在你的可运行文件中:
try:
do_something()
except KnownError as _:
exit(my_known_error_code)
您可以在调用 join()
后检查退出代码。
例如:
for p in processes:
p.join()
if p.exitcode is not 0:
exit(1)
参考: