[Python] multiprocessing

Fabrizio Mancini mr.file a gmail.com
Gio 17 Dic 2009 13:16:24 CET


2009/12/17 Ernesto <e.picardi a unical.it>:
> Ciao a tutti,
>
> tempo fa ho iniziato una discussione sul multi-threading da cui è
> emerso che per lanciare più threads con python per aumentare le
> prestazioni è più conveniente utilizzare la libreria multiprocessing.
> Tuttavia no so se la mia scelta è sensata o meno. Ho a disposizione
> più di un processore multi-core.
> Il mio script effettua un loop su una lista di file ed esegue per ogni
> iterazione una specifica funzione su ogni file, per esempio:
>
> miaLista=[file1,file2,file3]
> for file in miaLista:
>        miaFunzione(file)
>
> Vorrei poter lanciare la mia funzione sulla lista sfruttando più
> processi. Se scelgo di avviare 2 processi, i primi due file della
> lista vengono analizzati. Come faccio a dire allo script di continuare
> ad eseguire la funzione sul file successivo una volta che uno dei
> primi due processi è terminato?
puoi usare il pool del modulo multiprocessing.
http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool

oppure in alternativa un lock (però mi sa che cosi ti vai ad
impantanare più di quanto ti serve).

Ciao Fabrizio


Maggiori informazioni sulla lista Python