Пул многопроцессорности не ждет завершения задания - PullRequest
0 голосов
/ 30 мая 2020
import multiprocessing
import time

def job(i):
    print('I am job', i)
    while True:
        time.sleep(1)

with multiprocessing.Pool(processes=2) as pool:
    for i in range(2):
        pool.apply_async(job, args=(i,))
pool.join()

Разве это не должно вечно ждать, пока два дочерних процесса завершат sh, чего никогда не произойдет? Вместо этого родительский процесс немедленно завершает работу.

Это кажется некоторым следствием использования синтаксиса диспетчера контекста; следующие работы:

pool = multiprocessing.Pool(processes=2)
for i in range(2):
    pool.apply_async(job, args=(i,))
pool.close()
pool.join()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...