[Python] python threads, how to store results from a multithread code

enrico franchi enrico.franchi a gmail.com
Sab 10 Dic 2011 18:51:08 CET


2011/12/10 Massimo Di Stefano <massimodisasha a gmail.com>

> Ciao Henryx,
>

Credo che tu ti stia confondendo con un mio omonimo.


premetto che tutto quello che so di computer e python … l'ho imparato
> grazie a voi (comunità')
> purtroppo non ho studiato informatica e di sicuro ho tutto da imparare da
> questa discussione.
>
> Non ho esperienza tale da capire come funzionano i thread,  ho difficoltà'
> a capire come funzionano i look e metodi associati ad esso, cosa sia una
> queue e come la si usa
> sto provando ad imparare … autodidatta, ma ci sto provando.
>

Dai pero' almeno i lock chiamali con i loro nomi! In due post non hai manco
azzeccato il nome :P


>
> nella maggior parte dei casi tutti mi dicono che i thread siano "il male",
> a me pare che invece "risolvano problemi".
>

Risolvono problemi. Ma ne creano piu' di quelli che risolvono. Per esempio,
finche' non capisci *bene* come usare i lock stai facendo l'equivalente
computeristico di buttarti in un incrocio senza guadare se arriva qualcuno.
prima o poi ciocchi.


> vero se decido di usare brew, port fink o altro
> quindi un potenziale user sarebbe "costretto"
> ad installarsi xcode, brew (ottimo) .. o altro port/fink rtc etc ...
> certo non e' la fine del mondo, ma …  di sicuro non e' la soluzione
> ottimale se devo far usare lo script a terze persone.
>

Questo e' in essenza un falso problema. Male che vada dai due botte di
pyinstaller.
Altrimenti specifichi le dipendenze e se uno vuole usare un software se le
scarica. I miracoli non li puoi fare.


> un altro problema riscontrato sone errori e velocita'
> quando il numero di file da scaricare (sono tutti di pochi kbyte)
> aumenta, thread si prende un bel margine se comparato con gevent.
> nei test che sto provando i file sono 25
> thread per leggere scaricare e processare i file di testo ci mette circa 5
> secondi, gevent 18
>

Tutto questo e' controintuitivo. Mi sarei aspettato il contrario.


> ma il problema più grande e' che gevent una volta su 10 mi da un I/O error
> penso sia dovuto alla rete (per fare i test ho dovuto fermare il download
> di alcuni torrent che mi saturavano la banda)
> cosi' facendo gli errori sono diminuiti .. ma non scomparsi.
>

Ho un'idea sul perche': direi che la libreria di torrent non "gioca carino".
Bisognerebbe andare dentro a vedere.


> l'utilizzo di thread non da questo problema.
>
>
Mancano dettagli specifici. Se ti va bene, sei praticamente in shared
nothing e non dovresti avere problemi con i threads. Mi aspetterei tuttavia
delle performance non particolarmente superiori al caso sequenziale.


> ho scoperto gevent da 2 giorni grazie a tyrion-mx [grazie!]
> sto leggendo la documentazione, e' davvero bello e non ne sapevo
> l'esistenza … le coroutine sembrano qualcosa di magico.
>

Non lo sono, in realta'. E' molto simile a come ciascuno di noi gestisce la
concorrenza.
E' anche intuitivo: sai fare tante cose insieme una per volta. Ma se non ti
interrompi ogni tanto, non le fai tutte insieme, ma vai avanti a farne
sempre una.



-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20111210/d23d342e/attachment-0001.html>


Maggiori informazioni sulla lista Python