Wie behält man mit Pythons threading.Timer die Kontrolle über sich wiederholende Funktionen?

Barbara Streisand
Freigeben: 2024-11-09 18:37:02
Original
431 Leute haben es durchsucht

How to Maintain Control Over Repeating Functions Using Python's threading.Timer?

Threading.Timer – Behalten der Kontrolle über sich wiederholende Funktionen

Pythons Threading.Timer bietet einen Mechanismus zum Planen der Ausführung von Funktionen in bestimmten Zeitintervallen. Der anfängliche Ansatz mit mehreren Aufrufen von start() kann jedoch zu Laufzeitfehlern führen.

Um dieses Problem zu beheben, wird empfohlen, eine benutzerdefinierte Thread-Klasse zu erstellen, wie in der folgenden Lösung gezeigt:

import threading

class MyThread(threading.Thread):
    def __init__(self, event, function):
        threading.Thread.__init__(self)
        self.stopped = event
        self.function = function

    def run(self):
        while not self.stopped.wait(0.5):
            self.function()
Nach dem Login kopieren

In dieser Klasse wird das Stopped-Ereignis verwendet, um die Ausführung des Threads zu steuern. Anstatt den Timer mehrmals zu starten und zu stoppen, läuft der Thread kontinuierlich und überprüft das gestoppte Ereignis in regelmäßigen Abständen. Wenn das Ereignis festgelegt wird, wird der Thread beendet.

Im Code, der den Timer initiiert hat, können Sie dann das gestoppte Ereignis verwenden, um den Timer zu stoppen:

stopFlag = threading.Event()
thread = MyThread(stopFlag, function)
thread.start()

# To stop the timer later on
stopFlag.set()
Nach dem Login kopieren

Dieser Ansatz sorgt für eine Bereinigung und effiziente Möglichkeit zum Starten, Stoppen und Zurücksetzen des Timers, was eine flexible Kontrolle über wiederkehrende Funktionsausführungen ermöglicht.

Das obige ist der detaillierte Inhalt vonWie behält man mit Pythons threading.Timer die Kontrolle über sich wiederholende Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage