Как я могу предотвратить процессы zomb ie, вызванные pool.map, при использовании контекста «spawn»? - PullRequest
0 голосов
/ 11 февраля 2020

Я использую python 3.6 через VSCode в WSL Ubuntu. Мой код неоднократно вызывает функцию f() ниже:

def do_nothing(folder):
    print("I'm process", os.getpid())
    logfile = os.path.join(folder, 'stdout.out')

def f():
    folders = [str(i) for i in range(8)]
    with multiprocessing.get_context("spawn").Pool() as pool:
        pool.map(do_nothing, folders)

Это создает много процессов zomb ie со следующей сигнатурой, которые переживают вызывающую программу:

 PID TTY          TIME CMD
2710 ?        00:00:00 at-spi2-registr

PIDs эти процессы не соответствуют идентификаторам PID ни одного из процессов пула. Цифры очень близки.

Есть ли способ, которым я могу избежать этого? Я подозреваю, что переключение на fork может решить проблему, но причина, по которой я использую get_context("spawn"), заключается в том, что с fork VSCode выдает ошибку для каждого разветвленного процесса, говоря, что он не может отладить, и это неработоспособное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...