Python threading.timer - 每'n'秒重复一次函数 [英] Python threading.timer - repeat function every 'n' seconds
问题描述
我想每 0.5 秒触发一次函数,并且能够启动、停止和重置计时器.我不太了解 Python 线程的工作原理,并且在使用 Python 计时器时遇到了困难.
I want to fire off a function every 0.5 seconds and be able to start and stop and reset the timer. I'm not too knowledgeable of how Python threads work and am having difficulties with the python timer.
但是,当我执行 threading.timer.start()
两次时,我不断收到 RuntimeError: 线程只能启动一次
.有解决办法吗?我尝试在每次开始之前应用 threading.timer.cancel()
.
However, I keep getting RuntimeError: threads can only be started once
when I execute threading.timer.start()
twice. Is there a work around for this? I tried applying threading.timer.cancel()
before each start.
伪代码:
t=threading.timer(0.5,function)
while True:
t.cancel()
t.start()
推荐答案
最好的方法是启动定时器线程一次.在您的计时器线程中,您将编写以下代码
The best way is to start the timer thread once. Inside your timer thread you'd code the following
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
在启动计时器的代码中,您可以设置
停止事件来停止计时器.
In the code that started the timer, you can then set
the stopped event to stop the timer.
stopFlag = Event()
thread = MyThread(stopFlag)
thread.start()
# this will stop the timer
stopFlag.set()
这篇关于Python threading.timer - 每'n'秒重复一次函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!