Threading.Timer : répétition de fonctions à des intervalles spécifiés
Lorsque vous travaillez avec des threads Python, en particulier lorsque vous tentez de démarrer et d'arrêter une minuterie à plusieurs reprises, comprendre leur comportement est crucial. Un défi courant rencontré lors de l'utilisation de threading.Timer est la réception d'une RuntimeError.
L'erreur d'exécution :
La RuntimeError se produit lors de la tentative de démarrage d'un minuteur qui a déjà été démarré. . En effet, les threads, une fois démarrés, ne peuvent pas être redémarrés directement.
Solution de contournement :
Pour résoudre ce problème, envisagez d'utiliser un thread dédié pour gérer la fonction de minuterie. Voici comment vous pouvez l'aborder :
Créer un fil de discussion de minuterie :
Utilisez une classe de fil personnalisée (MyThread) qui hérite de Thread et intègre la logique du minuteur.
import threading class MyThread(threading.Thread): def __init__(self, event): Thread.__init__(self) self.stopped = event def run(self): while not self.stopped.wait(0.5): print("my thread") # call your function here
Démarrage et arrêt du minuteur :
Dans le code qui lance le minuteur, créez un événement stopFlag et utilisez-le pour signaler quand le minuteur doit s'arrêter.
stopFlag = threading.Event() thread = MyThread(stopFlag) thread.start() # Start the timer thread once # To stop the timer, set the stopFlag event stopFlag.set()
Avantages de cette approche :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!