<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Ciao Henryx,<div><br></div><div>premetto che tutto quello che so di computer e python … l'ho imparato grazie a voi (comunità')</div><div>purtroppo non ho studiato informatica e di sicuro ho tutto da imparare da questa discussione.</div><div><br></div><div>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</div><div>sto provando ad imparare … autodidatta, ma ci sto provando.</div><div><br></div><div>nella maggior parte dei casi tutti mi dicono che i thread siano "il male", a me pare che invece "risolvano problemi".</div><div><br></div><div><div><div>Il giorno Dec 10, 2011, alle ore 4:48 AM, enrico franchi ha scritto:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">d usare la libreria gevent e con essa riesco a salvare la suddetta lista … ma mi introduce ulteriori dipendenze<br>
(su linux nn sono un problema, ma su osx richiede di installare la libreria event da sorgente (non ho trovato binary), per poi installare gevent usando easy_install)<br><br></blockquote><div> </div><div>brew install libevent </div>
</div><div>pip install gevent</div><div><br></div><div>Ci vanno tipo 5 minuti.</div><div><br></div></blockquote><div><br></div><div><br></div><div>vero se decido di usare brew, port fink o altro</div><div>quindi un potenziale user sarebbe "costretto" </div><div>ad installarsi xcode, brew (ottimo) .. o altro port/fink rtc etc ...</div><div>certo non e' la fine del mondo, ma … di sicuro non e' la soluzione ottimale se devo far usare lo script a terze persone.</div><div><br></div><div>pensavo che … se la cosa potesse essere risolta con la libreria standard … "male non fosse"</div><div><br></div><div>comunque le dipendenze in un modo o nell'altro .. si risolvono.</div><div><br></div><br><blockquote type="cite"><div>Poi lavorare a thread e fare i/o asincrono sono due soluzioni diversissime.</div></blockquote><blockquote type="cite"><div> Usare una o l'altra per una questione di pure dipendenze indica chiaramente che non hai bisogno ne dell'una ne dell'altra e puoi andare sequenziale. :)</div></blockquote><div><br></div><div>un altro problema riscontrato sone errori e velocita'</div><div>quando il numero di file da scaricare (sono tutti di pochi kbyte) </div><div>aumenta, thread si prende un bel margine se comparato con gevent.</div><div>nei test che sto provando i file sono 25</div><div>thread per leggere scaricare e processare i file di testo ci mette circa 5 secondi, gevent 18</div><div><br></div><div>ma il problema più grande e' che gevent una volta su 10 mi da un I/O error</div><div>penso sia dovuto alla rete (per fare i test ho dovuto fermare il download di alcuni torrent che mi saturavano la banda) </div><div>cosi' facendo gli errori sono diminuiti .. ma non scomparsi.</div><div><br></div><div>l'utilizzo di thread non da questo problema.</div><div><br></div><div><br></div><blockquote type="cite">
<div><br>Scherzi a parte, da quello che ho capito la cosa che vorresti davvero sarebbe gevent. </div></blockquote><div><br></div><div>ho scoperto gevent da 2 giorni grazie a tyrion-mx [grazie!] </div><div>sto leggendo la documentazione, e' davvero bello e non ne sapevo l'esistenza … le coroutine sembrano qualcosa di magico.</div><div><br></div><br><blockquote type="cite"><div>Oltretutto da messaggi successivi sembra che tu non abbia minimamente idea dei problemi che devi affrontare e risolvere per usare i thread senza fare scoppiare tutto.</div>
<div><br></div></blockquote><div><br></div><div><div><br></div><div>il problema delle dipendenze era per facilitare l'utilizzo del codice ad utenti non consoni a compilazioni etc etc, </div><div>ma come detto, quando il numero di link aumenta gevent resta indietro rispetto all'esempio fatto con thread ed aumentano le possibilità' che scoppi tutto.</div><div><br></div><div>riconosco che al 99.99% l'errore restituito da gevent sara' riconducibile ad una mia cattiva implementazione del codice, ma non ne esco :'(</div><div>magari un problema potrebbe essere l'utilizzo di urllib invece di urllib2 (negli esempi di gevent utilizzano urlib2)</div><div><br></div><div>l'errore restituito da gevent e' :</div><div><br></div><div><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: LuxiMono, 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 12px; ">URLError: <urlopen error [Errno 67] request timed out></span></div><div><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: LuxiMono, 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 12px; "><br></span></div><div><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: LuxiMono, 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 12px; "><br></span></div><div><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: LuxiMono, 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 12px; ">log completo : [1]</span></div><div><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: LuxiMono, 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 12px; "><br></span></div><div>[1] <a href="http://paste.debian.net/148798/">http://paste.debian.net/148798/</a></div><div><br></div><div><br></div><div>--epifanio</div><div><br></div><div><br></div><div><br></div><div>p.s.</div><div><br></div><div>sto uscendo scemo per cercare di capire come fare il "return" della lista generata nel codice di esempio che utilizza i thread … ok non sarà' la soluzione ottimale</div><div>ma ora e' una sfida per capire *come si fa* .. e per il momento sta vincendo lui … alla grande (3-0 … al primo tempo)</div></div><br><blockquote type="cite">-- <br> .<br>..: -enrico-<br>
_______________________________________________<br>Python mailing list<br><a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>http://lists.python.it/mailman/listinfo/python<br></blockquote></div><br></div></body></html>