2010-11-11 19 views
7

Quiero ejecutar una tarea cada 2 horas. Python tiene un módulo Timer in Threading, pero ¿cumple con mis necesidades? ¿Cómo puedo generar un temporizador propio?Ejecutar tareas de vez en cuando en un proceso

+2

¿Desea ejecutar una tarea cada dos horas o desea que un script de Python haga algo cada dos horas? –

+0

Para llamar a otra función python cada 2 horas –

Respuesta

17

si desea que su código que se ejecuta cada 2 horas, la manera más fácil sería utilizar cron o un programador de tareas similares en función del sistema operativo

si desea que su Programm para llamar a una función cada n segundos (7200 en su caso) puede usar un hilo y event.wait. El ejemplo siguiente inicia un temporizador que se activa cada segundo e imprime una cadena a la salida estándar

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 para su respuesta. Funciona bien, y lo aprendí. –

+0

@wok ¿por qué? start se llama una vez y se usa para configurar, ejecutar es el método que hace el trabajo que desea hacer –

+0

Mi error sobre la herencia. – Wok

0

¿Puede ser una solución .......

import time 

    def fun1(): 
     print "Hi " 

    while 1: 

     fun1() 
     time.sleep(5) 

la fun1 función se ejecutará después de cada 5 segundos Pero no sé si esta es una buena forma de invocar una función después de un tiempo específico. ¿Algún inconveniente de esta solución?

Cuestiones relacionadas