Когда необходимо позвонить .join()
и .close()
на Pool
в нижеследующем примере? Читая документы, похоже, что он ждет завершения процессов. Например, если я что-то вроде этого:Многопроцессорный пул Python
while True:
pool = Pool(processes=4)
results = []
for x in range(1000):
result = pool.apply_async(f, (x,))
results.append(result)
for result in results:
result.get(timeout=1)
print "finished"
ли мне еще нужно ждать, пока другой процесс, чтобы закончить с join()
и close()
? Как я предполагаю, так как я повторяю все асинхронные результаты и ожидаю (блокирование) для их завершения, к моменту, когда я доберусь до print finished
, все процессы уже выйдут?
Это правильно?
Также, когда процессы начинают работать над функцией? Я заметил, что есть 4 процесса, работающих параллельно с ps -elf
. Выполняют ли процессы только работу над функцией после вызова result.get()
?