E8684fc4509c4814afdd576f886c2b24

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.

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 !

Your refactoring





Format Copy from initial code

or Cancel