Fix Python – threading.Timer – repeat function every ‘n’ seconds


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.

Pseudo code:

while True:

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):
        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)
# this will stop the timer

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