<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-16 19:06 GMT+01:00 Balan Victor <span dir="ltr"><<a href="mailto:balan.victor0@gmail.com" target="_blank">balan.victor0@gmail.com</a>></span>:<br>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>estrarre in continuazione una lista di comandi e lanciare al massino N comandi alla volta. Per fare questo pensavo di usare il modulo threading e ho scritto un codice simile a quello che trovate a questo indirizzo: <a href="http://pastebin.com/YZxa3VG8" target="_blank">http://pastebin.com/YZxa3VG8</a></div>
</div></blockquote><div><br></div><div>Cosi' a naso sembra la soluzione sbagliata ad un problema.<br></div><div>Tanto per dirne una, gia' andare a risolvere sti problemi con i thread si fa fatica, poi i thread di Python fanno pure un po' cacare (GIL, yadda yadda). <br>
</div><div>Poi se proprio uno vuole muoversi in quella direzione, c'e' multiprocess.dummy. Questo sempre nel mondo in cui sei molto convinto in cui i thread siano una buona soluzione e non vuoi evitarti un po' di dolore facendo multiprocessing e basta (ma magari sei sotto windows).<br>
<br></div><div>Dopo di che, di questi aggeggi ce ne sono di belli e pronti, senza stare a reinventare la ruota. Vedi Celery.<br></div><div><br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>Se ora faccio partire il tutto mi trovo con un output simile a questo:</div><div><br></div><div><div>DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 32</div><div>DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 3</div>
<div>DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 52</div><div>DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 43</div><div>DEBUG 4460 Consumer 2014-05-16 20:00:20,345: Get task task 27</div><div>
DEBUG 4552 task 52 2014-05-16 20:00:20,345: task 52 starting ...</div></div><div><br></div><div>io dichiaro una coda di dimensione 1. Mi aspetto che quando faccio todoQ.put questo resti in attesa finché nella coda non si libera un posto invece non succede cosi. Inoltre dal log sembra che scarichi i task nel seguente ordine 32, 3, 52, 43, 27 e cosi via. Mi aspetto che il primo task sia 32, invece è 52.</div>
</div></blockquote><div><br></div><div>Welcome to the magic world of threads!<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div>qualcuno può illuminarmi?</div></div></blockquote><div><br></div><div>Non usare i thread. ;) <br></div></div></div></div>