Comment faire pour exécuter une fonction asynchrone toutes les 60 secondes en Python?

Je veux exécuter une fonction toutes les 60 secondes sur Python, mais je ne veux pas être bloqué en attendant.

Comment puis-je le faire de manière asynchrone?

import threading
import time

def f():
    print("hello world")
    threading.Timer(3, f).start()

if __name__ == '__main__':
    f()    
    time.sleep(20)

Avec ce code, la fonction f est exécuté toutes les 3 secondes dans le temps de 20 secondes.temps.
À la fin, il donne une erreur et je pense que c'est parce que l'enfilage.la minuterie n'a pas été annulée.

Comment puis-je l'annuler?

Merci d'avance!

  • Votre programme est appelé à disparaître après la ponte du premier Temporisateur.
  • Pour annuler la Minuterie vous avez besoin de garder une référence à quelque part, et appeler sa cancel méthode.
  • Notez que toutes les solutions posté jusqu'à présent souffrent d'une (petite) cumulative de l'accumulation de l'erreur. C'est, plutôt que de calculer suivant la durée du sommeil d'après une heure de départ, ils ont simplement dormir "un autre des années 60". Ce ne sera jamais le sommeil de moins de 60 ans, et l'habitude de dormir un peu plus de 60 ans. Ce n'est pas toujours un problème, mais si vous voulez dormir exactement 1440 fois dans une journée, assurez-vous de compenser cette erreur.
  • ce n'est pas un problème dans ma solution. merci pour cette remarque!
  • connexes: setTimeout(), setInterval() en Python. Exemples de tkinter, tordu, gtk
InformationsquelleAutor aF. | 2010-02-08