Asked By – user1431282
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.
t=threading.timer(0.5,function) while True: t.cancel() t.start()
Now we will see solution for issue: threading.Timer – repeat function every ‘n’ seconds
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()
This question is answered By – Hans Then
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0