如何使用'threading.Timer”實現循環函數而不出現'運行時錯誤:線程只能啟動一次”問題?

Patricia Arquette
發布: 2024-11-12 05:13:01
原創
652 人瀏覽過

How to Implement a Recurring Function with 'threading.Timer' Without the 'RuntimeError: threads can only be started once' Issue?

使用'threading.Timer' 實現循環函數

創建一個每'n' 秒重複運行的函數是以下領域的常見要求:程式設計.然而,為此目的使用「threading.Timer」可能會帶來挑戰。

一種方法涉及多次啟動計時器線程,如下面的偽代碼所示:

t=threading.timer(0.5,function)
while True:
    t.cancel()
    t.start()
登入後複製

但是,這可能會導致「RuntimeError:線程只能啟動一次」錯誤,因為「threading.Timer」物件只能啟動一次。為了解決這個問題,我們可以建立一個自訂執行緒類別來處理定時器的重複執行和取消:

class MyThread(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 a function
登入後複製

在主程式碼中,我們可以建立一個事件來控制定時器執行緒:

stopFlag = Event()
thread = MyThread(stopFlag)
thread.start()
# this will stop the timer
stopFlag.set()
登入後複製

透過使用這種方法,我們可以根據需要啟動和停止重複函數,而不會遇到「RuntimeError」問題。

以上是如何使用'threading.Timer”實現循環函數而不出現'運行時錯誤:線程只能啟動一次”問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板