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.
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.
Pseudo code:
t=threading.timer(0.5,function) while True: t.cancel() t.start()
Advertisement
Answer
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()