0

Когда необходимо позвонить .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()?

ответ

0

близко()

Запрещает больше задач, от их представления в бассейн. Когда все задачи будут завершены, рабочие процессы выйдут.

присоединиться()

Wait для всех процессов, чтобы правильно начать с Proper way to use multiprocessor.Pool in a nested loop

Как только вы вызываете pool.apply_async процесс начнет работу функции, ее прекратить

Хорошая ссылка 'вернуть объект результата

Смежные вопросы