Вот пример, который реализует метод reset
для «расширения» таймера на исходный интервал.Он использует внутренний Timer
объект, а не подклассы threading.Timer
.
from threading import Timer
import time
class ResettableTimer(object):
def __init__(self, interval, function):
self.interval = interval
self.function = function
self.timer = Timer(self.interval, self.function)
def run(self):
self.timer.start()
def reset(self):
self.timer.cancel()
self.timer = Timer(self.interval, self.function)
self.timer.start()
if __name__ == '__main__':
t = time.time()
tim = ResettableTimer(5, lambda: print("Time's Up! Took ", time.time() - t, "seconds"))
time.sleep(3)
tim.reset()
Вывод:
Time's Up! Took 8.011203289031982 seconds