No, non lo fai, ma probabilmente è una buona idea se non usi più la piscina.
Motivi per chiamare pool.close
o pool.join
sono ben detti da Tim Peters in questo post SO :
Per quanto riguarda Pool.close (), dovresti chiamarlo quando - e solo quando - non invierai mai più lavoro all'istanza Pool. Quindi Pool.close () viene in genere chiamato quando la parte parallelizzabile del programma principale è terminata. Quindi i processi di lavoro termineranno quando tutto il lavoro già assegnato sarà completato.
È anche un'ottima pratica chiamare Pool.join () per attendere il termine dei processi di lavoro. Tra le altre ragioni, spesso non c'è un buon modo per segnalare eccezioni nel codice parallelizzato (le eccezioni si verificano in un contesto solo vagamente correlato a ciò che sta facendo il tuo programma principale) e Pool.join () fornisce un punto di sincronizzazione che può segnalare alcune eccezioni che si sono verificate in processi di lavoro che altrimenti non vedresti mai.
pool.join()
quindipool.close()
una volta che ho avviato tutti i thread del pool, ma non ho provato a utilizzarlipool.imap_unordered()
come iterabile.