Heim >Backend-Entwicklung >Python-Tutorial >Wie behält man mit Pythons threading.Timer die Kontrolle über sich wiederholende Funktionen?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 18:37:02525Durchsuche

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()

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()

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!

Stellungnahme:
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