使用'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中文網其他相關文章!