From fedd5fc4a6cd1f9b56de06b0ced406affdaf25c6 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Thu, 23 Apr 2020 09:24:18 +0000 Subject: [PATCH] moved wait_time from Timer to LoopRunner --- slic/runners/looprunner.py | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/slic/runners/looprunner.py b/slic/runners/looprunner.py index 9328c9394..fd56a9a8d 100644 --- a/slic/runners/looprunner.py +++ b/slic/runners/looprunner.py @@ -1,13 +1,14 @@ from threading import Thread from time import sleep, time -from .runner import Runner +from runner import Runner class LoopRunner(Runner): - def __init__(self, func, hold=True): + def __init__(self, func, wait_time=0, hold=True): self.func = func + self.wait_time = wait_time self.thread = Thread(target=self.loop) self.running = False if not hold: @@ -16,6 +17,10 @@ class LoopRunner(Runner): def loop(self): while self.running: self.func() + self.sleep() + + def sleep(self): + sleep(self.wait_time) def start(self): self.running = True @@ -30,27 +35,25 @@ class LoopRunner(Runner): class TimedLoopRunner(LoopRunner): def __init__(self, func, max_time, wait_time=0, hold=True): - self.timer = Timer(max_time, wait_time) - super().__init__(func, hold) + self.timer = Timer(max_time) + super().__init__(func, wait_time, hold) def loop(self): while self.running and self.timer: self.func() + self.sleep() class Timer: - def __init__(self, max_time, wait_time=0): + def __init__(self, max_time): self.max_time = max_time - self.wait_time = wait_time self.start_time = None def __bool__(self): if self.start_time is None: self.start_time = time() - else: - sleep(self.wait_time) return self.check() def check(self): @@ -65,22 +68,30 @@ class Timer: if __name__ == "__main__": - timer = Timer(2, 0.2) + timer = Timer(2) sleep(1) while timer: print("a") + sleep(0.2) def f(): print("f") - lr = LoopRunner(f) + lr = LoopRunner(f, 0.1) lr.start() sleep(0.5) lr.stop() - tlr = TimedLoopRunner(f, 3, 0.3) + + def g(): + print("g") + + tlr = TimedLoopRunner(g, 3, 0.3) tlr.start() + sleep(3.1) + print("done") +