Sto cercando di utilizzare il pacchetto multiprocessing
per Python
. Osservando i tutorial, la tecnica più chiara e intuitiva sembra utilizzare pool.map
, che consente all'utente di nominare facilmente il numero di processi e passare una funzione a pool.map
e un elenco di valori per quella funzione da distribuire tra le CPU. L'altra tecnica che ho incontrato è using queues per gestire un pool di lavoratori. Questo answer svolge un eccellente lavoro spiegando la differenza tra pool.map
, pool.apply
e pool.apply_async
, ma quali sono i vantaggi e gli svantaggi dell'utilizzo di pool.map
rispetto all'utilizzo di code come in questo example?Python Multiprocessing: pool.map vs using code
risposta
La tecnica pool.map
è un "sottoinsieme" della tecnica con le code. Cioè, senza avere pool.map
puoi facilmente implementarlo usando Pool
e Queue
. Detto questo, l'uso delle code offre molta più flessibilità nel controllo dei processi del pool, ovvero puoi far sì che particolari tipi di messaggi vengano letti solo una volta per la durata dei processi, controllare il comportamento di spegnimento dei processi del pool, ecc.
Se stai davvero cercando la "tecnica più chiara e più diretta", usare concurrent.futures.ProcessPoolExecutor
è probabilmente il modo più semplice. Ha un metodo map
e alcune altre primitive che lo rendono molto utilizzabile. È anche compatibile con Queue
s.
libreria molto semplice e intuitiva. – Jaydev
- 1. Python multiprocessing pool.map genera IndexError
- 2. Code di multiprocessing in Python più lente di pool.map
- 3. Python multiprocessing Pool.map sta chiamando aquire?
- 4. "select" su più code Python multiprocessing?
- 5. Python vs. threading multiprocessing in Linux
- 6. Multiprocessing di Python - Pipe vs Queue
- 7. pitone processo multiprocessing vs. Python standalone VM
- 8. Parsing Javascript using Ruby code
- 9. Come utilizzare Python multiprocessing Pool.map per riempire l'array numpy in un ciclo for
- 10. multiprocessing vs threading vs asyncio in Python 3.4
- 11. asyncio e coroutine vs code di attività
- 12. eccezione Finding in python multiprocessing
- 13. python multiprocessing
- 14. Multithreading vs multiprocessing
- 15. NumPy vs. multiprocessing e mmap
- 16. Alternativa per fetchedResultsController code using magicalrecord?
- 17. Merging code branch to master using TortoiseGit
- 18. Python multiprocessing stdin ingresso
- 19. Elaborazione multipla Python - monitoraggio del processo di funzionamento pool.map
- 20. python: multiprocessing Event
- 21. python multiprocessing pool terminate
- 22. Progettazione multiprocessing Python
- 23. Locks multiprocessing Python
- 24. Come lasciare Pool.map prendere una funzione lambda
- 25. Code messaggi vs socket
- 26. dizionario python di code inter processi
- 27. cv2.cameraCalibration using python
- 28. Il pool di multiprocessing Python si blocca al join?
- 29. multiprocessing di python, big data turn process in sleep
- 30. Python multiprocessing errore di uscita
'pool.map' chiude automaticamente i processi quando viene completato? – Michael
Dalla documentazione: '' Quando l'oggetto pool è garbage collocato, terminate() verrà chiamato immediatamente .''. Ma non ci farei affidamento: sarebbe meglio se ti fossi assicurato che la piscina fosse chiusa alla fine della tua app. Altrimenti, potresti finire con alcuni zombi rimasti nel tuo sistema. Per quanto riguarda 'pool.map' - no, non chiude i processi. I processi vivono fino a quando la loro piscina non è chiusa o orfana. –