J'ai un script PyTorch avec 16 processus. Voici un extrait de code du processus principal:Le processus enfant python se ferme de façon inattendue avec le code de sortie -9
procs = [mp.Process(target=self.worker_wrapper, args=(i,)) for i in range(self.n_workers)]
for p in procs: p.start()
while True:
time.sleep(60)
for i, p in enumerate(procs):
self.logger.info('Check: id %d, exitcode %s, alive %s' % (
i, str(p.exitcode), str(p.is_alive())))
le worker_wrapper
est la suivante:
def worker_wrapper(self, id):
try:
self.worker(id)
except Exception as e:
self.logger.info(e)
self.logger.error(traceback.format_exc())
Le worker
fera des choses et ne devrait jamais arrêter. Il fonctionne bien au début, mais généralement après 1 jour en cours d'exécution, certains processus enfants (pas tous) de sortie de façon inattendue, je reçois la sortie comme ceci:
[2017-06-15 08:45:21,540] Check: id 13, exitcode -9, alive False
Et il n'a pas pris aucune exception. J'ai essayé de chercher exitcode -9 mais je n'ai rien trouvé d'utile. Est-ce que quelqu'un rencontre cela avant? Ou avez-vous une idée sur la façon de déboguer cela? Je suis désolé de ne pas pouvoir fournir un extrait de code minimal reproductible, car il faut généralement un jour pour qu'il se reproduise. Et j'utilise python2.7
Vous avez raison! J'ai trouvé que l'OOM a tué mon processus! –