Python 如何捕获多进程退出原因?

Python 如何捕获多进程退出原因?,python,exception,multiprocessing,Python,Exception,Multiprocessing,在使用python多处理包创建进程时,在运行该进程几次之后。子进程将在没有抛出异常的情况下退出,那么如何找到该进程退出的原因呢 task = create_process('plugin1', start_process) task.join() if task.exception: pid, e, tb = task.exception def create_process(name, func): task = Process(target=func, name=name,

在使用python
多处理
包创建进程时,在运行该进程几次之后。子进程将在没有抛出异常的情况下退出,那么如何找到该进程退出的原因呢

task = create_process('plugin1', start_process)
task.join()
if task.exception:
    pid, e, tb = task.exception

def create_process(name, func):
    task = Process(target=func, name=name, args=(name,))
    task.daemon = True
    task.start()
    return task

class Process(multiprocessing.Process): 
    def __init__(self, *args, **kwargs):
        multiprocessing.Process.__init__(self, *args, **kwargs)
        self._pconn, self._cconn = multiprocessing.Pipe()
        self._exception = None

    def run(self):
        try:
            multiprocessing.Process.run(self)
            print(50 * '1', os.getpid(), self.name)
            import setproctitle
            setproctitle.setproctitle("test5")
            print(50 * '0', os.getpid(), self.name)
            self._cconn.send(None)
        except Exception as e:
            tb = traceback.format_exc()
            self._cconn.send((os.getpid(), e, tb))

    @property
    def exception(self):
        if self._pconn.poll():
            self._exception = self._pconn.recv()
        return self._exception

这回答了你的问题吗?不清楚a)您的代码试图做什么,也不清楚b)预期的行为是什么。您说“子流程将无例外地退出”。您是否希望子流程永远运行?您是否希望它在出现异常情况时退出?您的流程打印的是什么?