Je veux exécuter une fonction toutes les 60 secondes sur Python mais je ne veux pas être bloqué entre-temps.Comment exécuter une fonction de manière asynchrone toutes les 60 secondes en Python?
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ée toutes les 3 secondes dans le délai de 20 secondes. À la fin, il donne une erreur et je pense que c'est parce que le threading.timer n'a pas été annulé.
Comment l'annuler?
Merci d'avance!
Votre programme se termine après la création du premier minuteur. –
Afin d'annuler le Timer, vous devez garder une référence quelque part, et appeler sa méthode 'cancel'. –
Notez que toutes les solutions publiées à ce jour souffrent d'une (accumulation) cumulative d'erreurs. C'est-à-dire, plutôt que de calculer la durée de sommeil suivante en fonction d'un temps de départ fixe, ils dorment simplement pendant «60 autres». Cela ne dormira jamais pendant moins de 60 ans, et dormira généralement pendant un peu plus de 60 ans. Ce n'est pas toujours un problème, mais si vous voulez dormir exactement 1440 fois par jour, assurez-vous de compenser cette erreur. –