Threading.Timer: Wiederholen von Funktionen in bestimmten Intervallen
Bei der Arbeit mit Python-Threads, insbesondere wenn versucht wird, einen Timer wiederholt zu starten und zu stoppen, Es ist entscheidend, ihr Verhalten zu verstehen. Eine häufige Herausforderung bei der Verwendung von threading.Timer ist der Empfang eines RuntimeError.
Der Runtime-Fehler:
Der RuntimeError tritt auf, wenn versucht wird, einen Timer zu starten, der bereits gestartet wurde . Dies liegt daran, dass einmal gestartete Threads nicht direkt neu gestartet werden können.
Problemumgehung:
Um dieses Problem zu beheben, erwägen Sie die Verwendung eines dedizierten Threads zur Handhabung der Timer-Funktion. So können Sie vorgehen:
Erstellen eines Timer-Threads:
Verwenden Sie eine benutzerdefinierte Thread-Klasse (MyThread), die von Thread erbt und die Timer-Logik integriert.
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
Starten und Stoppen des Timer:
Erstellen Sie im Code, der den Timer initiiert, ein stopFlag-Ereignis und verwenden Sie es, um zu signalisieren, wann der Timer anhalten soll.
stopFlag = threading.Event() thread = MyThread(stopFlag) thread.start() # Start the timer thread once # To stop the timer, set the stopFlag event stopFlag.set()
Vorteile dieses Ansatzes :
Das obige ist der detaillierte Inhalt vonWie vermeide ich RuntimeError bei Verwendung von threading.Timer in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!