[Python] saluti e prima domanda sulle list comprhension

Pietro Battiston battiston a mail.dm.unipi.it
Lun 28 Gen 2008 20:43:33 CET


Enrico Franchi ha scritto:
> On Jan 28, 2008, at 11:32 AM, quilospam a email.it wrote:
>
>   
> Solo ed esclusivamente se uno vuole cattive performance e divertirsi a  
> debuggare race conditions e altri heisenbugs.
> In particolare il modo più naturale per lavorare fra thread è  
> precisamente quello del passaggio di messaggi.
>
> Nota che è qualcosa che ci viene insegnato anche dalla comune  
> esperienza: se devi mettere due persone a lavorare su qualcosa, è bene  
> dividere le responsabilità e fare comunicare, *non* lasciare che  
> mettano le mani nelle stesse cose.


Mi inserisco un attimo, perché sto impazzendo proprio in questi giorni
con i thread sotto python e stavo per buttare tutto seguendo le vostre
parole, quando questa frase mi ha fatto ripensare.

In sostanza: concesso che utilizzare tanti thread che fanno le stesse
cose sia sbagliato per motivi di comodità e/o di efficienza, ammettete
casi in cui invece sia bene utilizzare i thread per fare cose diverse?

Vi scrivo un attimo quello che mi sta facendo impazzire: ho un
programmino che ogni tanto deve essere capace di eseguire un'azione dopo
un certo numero di secondi. Non mi interessa che il momento in cui la
esegue sia precisissimo (per intenderci, se sbaglia anche di qualche
secondo non me ne frega niente), ma:
1) il resto del programma intanto deve lavorare
2) non voglio complicarmi la vita
3) non voglio sprecare CPU inutilmente
4) l'azione da eseguire dipende dal thread principale

Per il motivo 1), non posso fare un semplice sleep(numerodisecondi), per
i motivi 2) e 3) non voglio fare un megaciclo, per il motivo 4) non
voglio un processo separato.

Perciò ho un thread che parte, si mette in sleep(numerodisecondi) e
quando si "sveglia" esegue l'azione.
Sbaglio? C'è un modo furbo per rispondere alle mie 4 esigenze senza
usare thread?

Fin qui la domanda teorica. A questo punto aggiunto che il mio programma
usa le pygtk, ed entrambi i thread le utilizzano. So che gtk non è
thread-safe, ma so anche che ci sono delle apposite funzioni che rendono
i thread "compatibili" nel momento in cui utilizzano oggetti gtk.

Il fatto di usare gtk mi dà un modo (semplice) alternativo di dare
un'azione da eseguire dopo un tot di tempo, senza nel frattempo
paralizzare la GUI?

grazie

Pietro


More information about the Python mailing list