В документации для multiprocessing
указано следующее о Pool.join()
:
Ожидание завершения рабочих процессов. Перед использованием join()
.
необходимо позвонить close()
или terminate()
. Я знаю, что Pool.close()
предотвращает отправку любой другой задачи в пул; и что Pool.join()
ждет, пока пул завершится sh, прежде чем продолжить с родительским процессом.
Итак, почему я не могу вызвать Pool.join()
до Pool.close()
в случае, когда я хочу повторно использовать свой пул для выполнения нескольких задач и, наконец, close()
это намного позже? Например:
pool = Pool()
pool.map(do1)
pool.join() # need to wait here for synchronization
.
.
.
pool.map(do2)
pool.join() # need to wait here again for synchronization
.
.
.
pool.map(do3)
pool.join() # need to wait here again for synchronization
pool.close()
# program ends
Почему необходимо один "вызов close()
или terminate()
перед использованием join()
"?