[Python] threads

Fabrizio Mancini mr.file a gmail.com
Mar 1 Dic 2009 11:52:46 CET


> premetto che non ho alcuna esperienza con i threads. Ciò nonostante,
> vorrei iniziare a capire come poterli utilizzare per sfruttare le
> architetture multicore delle moderne cpu e, quindi, migliorare le
> prestazione di uno script su cui sto lavorando. In particolare, lo
> script in questione effettua un parsing di un input file e subito dopo
> genera una serie di file di dimensioni più piccole. Di seguito, un
> loop è utilizzato per effettuare alcune operazioni su tutti i file
> creati. Tali operazioni sono le medesime per ogni file. Mi chiedevo
> se, utilizzando i threads, fossi in grado di ridurre i tempi di
> esecuzione del loop, magari indirizzando parte dei file generati a
> threads indipendenti. Nel caso affermativo, come potrei procedere?
>
Ciao,
come ti hanno risposto, a causa del GIL non avrai nessun miglioramento
delle prestazioni, soprattutto per operazioni di IO di questo genere.
Se devi effettuare pesantemente questo genere di operazioni ti posso
indicare invece un framework che ti può aiutare, come ha fatto con me!
Twisted (http://twistedmatrix.com)
Si tratta di programmazione ad eventi, e come mi par di capire, puoi
strutturare la cosa come un controller ed n processi che fanno il
lavoro.
Con twisted puoi usare il perspective broker a cui si possono
sottoscrivere più client e lo puoi anche distribuire sulla rete.
Il perspective broker "server" è quello che ha la logica e
distribuisce i compiti ai figli disponibili in ascolto, mentre il
"client" è quello "stupido" ed esegue un solo compito per volta e
ripetitivo.
HTH
Ciao Fabrizio


Maggiori informazioni sulla lista Python