2010-11-11 11 views
7

Desidero eseguire un'attività ogni 2 ore. Python ha un modulo Timer in Threading, ma soddisfa le mie esigenze? Come faccio a generare autonomamente un timer proprio?Esegui attività ogni tanto all'interno di un processo

+2

Si desidera eseguire un'attività ogni due ore oppure si desidera eseguire uno script Python ogni due ore? –

+0

Per chiamare un'altra funzione python ogni 2 ore –

risposta

17

Se si desidera il codice per essere eseguito ogni 2 ore il modo più semplice sarebbe utilizzando cron o uno scheduler simile a seconda del sistema operativo

se si desidera che il programma per chiamare una funzione ogni n secondi (7200 nel tuo caso) potresti usare un thread e event.wait. Il seguente esempio avvia un timer che viene attivato ogni secondo e stampa una stringa per stdout

import threading 
import time 

class TimerClass(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self.event = threading.Event() 

    def run(self): 
     while not self.event.is_set(): 
      print "do something" 
      self.event.wait(1) 

    def stop(self): 
     self.event.set() 

tmr = TimerClass() 
tmr.start() 

time.sleep(10) 

tmr.stop() 
+0

Thx per la tua risposta. Funziona bene e l'ho imparato. –

+0

@wok perché? start viene chiamato una volta e usato per fare il setup, run è il metodo che fa il lavoro che vuoi fare –

+0

Il mio errore sull'ereditarietà. – Wok

0

Questo può essere una soluzione ....... sarà eseguito

import time 

    def fun1(): 
     print "Hi " 

    while 1: 

     fun1() 
     time.sleep(5) 

La funzione di fun1 dopo ogni 5 sec. Ma non so se questo è un buon modo per invocare una funzione dopo un momento specifico. Eventuali inconvenienti di questa soluzione?

Problemi correlati