user1431282 user1431282 - 1 year ago 562
Python Question

Python threading.timer - repeat function every 'n' seconds

I'm having difficulties with the python timer and would greatly appreciate some advice or help :D

I'm not too knowledgeable of how threads work, but I just want to fire off a function every 0.5 seconds and be able to start and stop and reset the timer.

However, I keep getting

RuntimeError: threads can only be started once
when I execute
twice. Is there a work around for this? I tried applying
before each start.

Pseudo code:

while True:

Answer Source

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