Метод Pool.imap_unoredred
возвращается немедленно, а не только после завершения работы. Его возвращаемое значение является итератором (таким образом, префикс «i»), и вы должны перебирать все возвращаемые значения, чтобы знать, что вся партия была обработана. Если вы хотите дождаться завершения всей работы, прежде чем основной процесс продолжит работу, вы, вероятно, захотите вместо этого использовать метод map
(как вы упомянули, найдя в комментарии).
В качестве альтернативы вы может заменить звонок на terminate()
звонком close()
. Это не остановит работу пула (просто предотвратит отправку новых заданий). Вызов join()
будет блокироваться, пока все рабочие не закончат.