首頁  >  文章  >  後端開發  >  如何使用Python的threading.Timer保持對重複函數的控制?

如何使用Python的threading.Timer保持對重複函數的控制?

Barbara Streisand
Barbara Streisand原創
2024-11-09 18:37:02427瀏覽

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

Threading.Timer - 維護重複函數的控制

Python 的threading.Timer 提供了一種機制來安排函數以指定的時間間隔運轉。但是,使用多次呼叫 start() 的初始方法可能會導致執行時間錯誤。

要解決此問題,建議建立自訂執行緒類,如下面的解決方案所示:

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

在這個類別中,stopped事件用於控制執行緒的執行。該線程不是多次啟動和停止計時器,而是連續運行,定期檢查停止的事件。當事件設定後,線程終止。

在啟動計時器的程式碼中,您可以使用已停止的事件來停止計時器:

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

# To stop the timer later on
stopFlag.set()

這種方法提供了一個乾淨的方法來啟動、停止和重置計時器的有效方法,允許靈活控制重複函數的執行。

以上是如何使用Python的threading.Timer保持對重複函數的控制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn