Não, não precisa, mas provavelmente é uma boa ideia se você não vai mais usar a piscina.
Razões para ligar pool.close
ou pool.join
são bem ditas por Tim Peters neste post do SO :
Quanto a Pool.close (), você deve chamá-lo quando - e somente quando - você nunca enviar mais trabalho para a instância Pool. Portanto, Pool.close () é normalmente chamado quando a parte paralelizável do programa principal é concluída. Em seguida, os processos de trabalho serão encerrados quando todo o trabalho já atribuído for concluído.
Também é uma prática excelente chamar Pool.join () para aguardar o término dos processos de trabalho. Entre outras razões, geralmente não há uma boa maneira de relatar exceções em código paralelizado (as exceções ocorrem em um contexto vagamente relacionado ao que seu programa principal está fazendo), e Pool.join () fornece um ponto de sincronização que pode relatar algumas exceções que ocorreram em processos de trabalho que de outra forma nunca veria.
pool.join()
entãopool.close()
depois de iniciar todos os threads do pool, mas não tentei usarpool.imap_unordered()
como iterável.