2010-11-11 15 views
7

Je souhaite exécuter une tâche toutes les 2 heures. Python a un module Timer in Threading, mais répond-il à mes besoins? Comment puis-je générer un minuteur approprié moi-même?Exécuter une tâche de temps en temps au cours d'un processus

+2

Voulez-vous exécuter une tâche toutes les deux heures ou voulez-vous qu'un script Python fasse quelque chose toutes les deux heures? –

+0

Pour appeler une autre fonction python toutes les 2 heures –

Répondre

17

Si vous voulez que votre code à exécuter toutes les 2 heures la meilleure façon serait d'utiliser Cron ou un programmateur similaire en fonction de votre système d'exploitation

si vous voulez que votre programm appeler une fonction toutes les secondes n (7200 dans votre cas) vous pourriez utiliser un thread et event.wait. L'exemple suivant démarre une minuterie qui se déclenche à chaque seconde et imprime une chaîne à 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

Merci pour votre réponse. Cela fonctionne bien, et je l'ai appris. –

+0

@wok pourquoi? start est appelé une fois et utilisé pour faire l'installation, run est la méthode qui fait le travail que vous voulez faire –

+0

Mon erreur sur l'héritage. – Wok

0

cela peut être une solution .......

import time 

    def fun1(): 
     print "Hi " 

    while 1: 

     fun1() 
     time.sleep(5) 

La fonction fun1 sera exécutée toutes les 5 secondes Mais je ne sais pas si c'est un bon moyen d'invoquer une fonction après un certain temps. Des inconvénients de cette solution?