<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-12-22 18:15 GMT+01:00 Riccardo Brazzale <span dir="ltr"><<a href="mailto:riccardo.brazzale@gmail.com" target="_blank">riccardo.brazzale@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Grazie Manlio,<br><br></div>Mi sono chiesto: chi ama infinitamente i python thread nella mailing list?<br>Quella persona sarà certamente quella che verrà a darmi una mano.... <img goomoji="338" style="margin: 0px 0.2ex; vertical-align: middle;"> :-)!<br><br></div>Ti ringrazio!<br><br></div><div>Ti confesso che non ci capisco molto ma ci provo.<br><br></div></div></div></blockquote><div><br></div><div>Devi studiare come sincronizzare i thread.</div><div>Per inviare e ricevere dati si usa una Queue (una per ricevere ed una per inviare).</div><div>Per notificare un thread si una una Condition.</div><div>Poi ci sono i Mutex ed i Lock per sincronizzare l'accesso a variabili condivise,</div><div>ma se puoi evita variabili condivise (con l'eccezione di Queue e Conditio</div><div>che sono protette).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div></div><div>All'interno del run reale non c'e' altro che un ciclo for di invio mail (qualche centinaio).<br><br></div><div>Fino ad ora ero riuscito a mettere in piedi qualcosa che funziona bene ma blocca ovviamente l'interfaccia.<br><br></div><div>Adattando il codice che ho postato, tutto va molto meglio tranne, ripeto, quando tento di fermare il processo di invio,<br><br></div><div>Devo mettermi a studiare oltre, mi pare non ci siano alternative.<br><br></div><div>Vedo se riesco ad adattare ulteriormente sfruttando, come dici tu, una queue.<br><br></div></div></div></blockquote><div><br></div><div><a href="https://docs.python.org/2/library/threading.html#condition-objects">https://docs.python.org/2/library/threading.html#condition-objects</a></div><div><br></div><div>I thread non sono impossibili da controllare, il problema è che un buon 80% di quello</div><div>che si legge è errato oppure fuorviante/incompleto.</div><div><br></div><div>Da una semplice ricerca wx + thread è venuto fuori questo articolo:</div><div><a href="http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/">http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/</a><br></div><div><br></div><div>che è lo stesso che tu hai usato come riferimento.</div><div><br></div><div>Ci sono due problemi in quell'articolo.</div><div>Il primo è che non usa una Condition variable per avvisare che il thread quando</div><div>deve fermarsi. Nell'esempio che fa l'autore non serve, perchè il thread non gira</div><div>all'infinito.  Però non discutere di questo aspetto fondamentale porta solo</div><div>confusione a chi legge ed ha poca esperienza.</div><div><br></div><div>Il secondo problema è che non attende che il thread abbia terminato,</div><div>chiamando il metodo join.</div><div></div></div><br></div><div class="gmail_extra">> [...]</div><div class="gmail_extra"><br></div><div class="gmail_extra">Ciao  Manlio</div></div>