Python 如何捕获多进程退出原因?
在使用pythonPython 如何捕获多进程退出原因?,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,
多处理
包创建进程时,在运行该进程几次之后。子进程将在没有抛出异常的情况下退出,那么如何找到该进程退出的原因呢
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)预期的行为是什么。您说“子流程将无例外地退出”。您是否希望子流程永远运行?您是否希望它在出现异常情况时退出?您的流程打印的是什么?