1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import threading import time class RepeatTimer(): def __init__(self, interval, delegate): self.Event = threading.Event() self.Thread = threading.Thread(target = lambda event, interval, delegate: self.Repeat(event, interval, delegate), args = (self.Event, interval, delegate)) def Repeat(self, event, interval, delegate): while True: event.wait(interval) if event.isSet(): break delegate() def Start(self): self.Thread.start() def Stop(self): self.Event.set() self.Thread.join()
Refactorings
No refactoring yet !
An instance of this class allows you to repeatedly invoke the specified function 'delegate' every 'interval' seconds, starting once you call its Start() method and running until you call its Stop() method.