как поймать причины многопроцессорного выхода? - PullRequest
0 голосов
/ 13 марта 2020

При использовании пакета 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...