[Linuxtrent] Re: Uscita da programma/script in python

  • From: Daniele Pizzolli <ors@xxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 16 Jul 2009 10:42:41 +0200

On Thursday 16 July 2009 07:12:48 Alex wrote:
> Salve, ho un ciclo while infinito che mi crea una piccola animazione in
> loop....vorrei che dopo tot secondi il programma esca e si chiuda; ho
> provato questo codice ma non funziona:
>
>
> def uscita():
>     print "Ha letto la funzione !"
>     raise SystemExit
> t = threading.Timer(25.0, uscita)
> t.start()
> # Looppa l'animazione
> while True:
>      #codice in loop dell'animazione
>
>
> Dove sbaglio ?

Ciao,
Le eccezioni solo locali al thread che le genera, per cui la tua uscita
uccide solo se stessa.

Un'dea al volo per questo tipo di problema è avere un check nel while che
controlla un condizione.

self._finished = threading.Event()

while True:
    if self._finished.isSet():
        return
    self.task()

dove self.task è la funzione della tua animazione che però deve collaborare e 
terminare ogni ciclo in tempo ragionevole.
inoltre bisogna fare in modo che self._finished.set() sia chiamato dopo un tot 
di secondi o quando l'utente preme exit.

Ciao,
Daniele Pizzolli
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: