дочерний процесс питона выход неожиданно с кодом выхода -9

голоса
0

У меня есть PyTorch сценарий с 16 процессов. Ниже приведен фрагмент кода из основного процесса:

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())))

worker_wrapperэто:

def worker_wrapper(self, id):
    try:
        self.worker(id)
    except Exception as e:
        self.logger.info(e)
        self.logger.error(traceback.format_exc())

workerБудет делать некоторые вещи и никогда не должен останавливаться. Он хорошо работает в начале, но , как правило , после 1 дня подряд, некоторые дочерние процессы (не все) выход неожиданно, я получаю выход , как это:

[2017-06-15 08:45:21,540] Check: id 13, exitcode -9, alive False

И это не уловила никаких исключений. Я пытался искать ExitCode -9, но не получить ничего полезного. Кто-нибудь встретить это раньше? Или у вас есть какие-либо идеи о том, как отладить это? Я сожалею, что не может обеспечить минимальный воспроизводимый фрагмент кода, так как он обычно занимает один день, чтобы воспроизвести. И я использую python2.7

Задан 15/06/2017 в 19:01
источник пользователем
На других языках...                            


1 ответов

голоса
1

Код выхода -9 означает , что процесс был убит через SIGKILL.

Это, вероятно, из-за вашу машину не хватает памяти и ядро ​​ОС было запуская ОЫЙ киллер.

Для того, чтобы убедиться в том , что, проверьте журналы ядра с помощью dmesgследует заметить ОЫЙ киллер таргетирования ваших рабочие процессов.

Вам необходимо сократить объем памяти приложения (или увеличить память вашего сервера / рабочей станции). Также проверьте приложение не утечка памяти.

Ответил 19/06/2017 в 05:34
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more