2015-12-01 2 views
0

J'ai un comportement inattendu dans la bibliothèque apscheduler de python.La fonction de tâches planifiées est appelée plusieurs fois dans la bibliothèque APScheduler en python

ici, j'ai un code simple pour appeler la fonction de base comme:

import sys 
from time import sleep 
from datetime import datetime 
from apscheduler.scheduler import Scheduler 
import logging 
logging.basicConfig() 
count = 0; 

    # start the scheduler 

# define the function that is to be executed 
# it will be executed in a thread by the scheduler 
def my_job(): 



    print "hello world" 


def main(): 

    sched = None 


    while True: 


     sched=Scheduler() 

     sched.start() 

     sched.add_cron_job(my_job,second=3) 

     sched.print_jobs() 


     sleep(5) 
     sys.stdout.write('.'); sys.stdout.flush() 


############################################################## 

if __name__ == "__main__": 
    main() 

Ici, j'ai une fonction d'imprimer chaîne simple et je veux avoir cet appel ce my_job donc j'appelé my- func utilisant le programmateur comme

sched.add_cron_job(my_job,second=3) 

Le programme appelle la fonction désirée mais pendant la troisième seconde de chaque minute. Il imprime plusieurs monde de bonjour comme

hello world 
hello world 
hello world 

plusieurs fois lorsque le temps d'exécution est rencontre.

Je suis confondu avec le comportement de l'ordonnanceur. comment peut-il appeler la fonction plusieurs fois lorsque le temps de planification est atteint?

Répondre

1

Il imprime plusieurs mondes Hello car vous créez un nouveau planificateur à chaque itération de votre boucle infinie. Pensez-vous que les planificateurs des précédentes itérations s'arrêteront juste lorsque vous en créerez un nouveau?