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