[Python] wxpython & thread

Manlio Perillo manlio.perillo a gmail.com
Lun 22 Dic 2014 20:07:45 CET


2014-12-22 18:15 GMT+01:00 Riccardo Brazzale <riccardo.brazzale a gmail.com>:

> Grazie Manlio,
>
> Mi sono chiesto: chi ama infinitamente i python thread nella mailing list?
> Quella persona sarà certamente quella che verrà a darmi una mano.... [?]
> :-)!
>
> Ti ringrazio!
>
> Ti confesso che non ci capisco molto ma ci provo.
>
>
Devi studiare come sincronizzare i thread.
Per inviare e ricevere dati si usa una Queue (una per ricevere ed una per
inviare).
Per notificare un thread si una una Condition.
Poi ci sono i Mutex ed i Lock per sincronizzare l'accesso a variabili
condivise,
ma se puoi evita variabili condivise (con l'eccezione di Queue e Conditio
che sono protette).


> All'interno del run reale non c'e' altro che un ciclo for di invio mail
> (qualche centinaio).
>
> Fino ad ora ero riuscito a mettere in piedi qualcosa che funziona bene ma
> blocca ovviamente l'interfaccia.
>
> Adattando il codice che ho postato, tutto va molto meglio tranne, ripeto,
> quando tento di fermare il processo di invio,
>
> Devo mettermi a studiare oltre, mi pare non ci siano alternative.
>
> Vedo se riesco ad adattare ulteriormente sfruttando, come dici tu, una
> queue.
>
>
https://docs.python.org/2/library/threading.html#condition-objects

I thread non sono impossibili da controllare, il problema è che un buon 80%
di quello
che si legge è errato oppure fuorviante/incompleto.

Da una semplice ricerca wx + thread è venuto fuori questo articolo:
http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

che è lo stesso che tu hai usato come riferimento.

Ci sono due problemi in quell'articolo.
Il primo è che non usa una Condition variable per avvisare che il thread
quando
deve fermarsi. Nell'esempio che fa l'autore non serve, perchè il thread non
gira
all'infinito.  Però non discutere di questo aspetto fondamentale porta solo
confusione a chi legge ed ha poca esperienza.

Il secondo problema è che non attende che il thread abbia terminato,
chiamando il metodo join.

> [...]

Ciao  Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20141222/5c189c8c/attachment.html>


Maggiori informazioni sulla lista Python