Если я хочу дать больше работы моему Process Pool, могу ли я вызвать Pool.join () до Pool.close ()? - PullRequest
7 голосов
/ 06 января 2020

В документации для 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()"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...