При использовании пакета python multiprocessing
для создания процесса, после запуска процесса несколько раз. Подпроцесс выйдет без исключений, так как найти причину выхода из этого процесса?
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