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