Таймер на Python, с возможностью его обнуления

Как реализовать таймер, который можно было бы сбросить до нулевых значений. Т.е. у нас есть код, который начинает отсчет таймера, и цикл с условиями, в случае которых они бы сбрасывались. Пример программного кода ниже:

timer1 = time.monotonic()
timer2 = time.monotonic()
timer3 = time.monotonic()
while True:
    LEFTANDPRESSBUTTON(0x45, 12)
    time.sleep(8)
    if timer1 > 30:
        LEFTANDPRESSBUTTON(0x45, 12)
        print('Клавиша E', timer1)
        timer1 = time.monotonic()
    else:
        break
    if timer2 > 60:
        LEFTANDPRESSBUTTON(0x45, 12)
        print('Клавиша e', timer2)
        timer2 = time.monotonic()
    else:
        break
    if timer3 > 120:
        LEFTANDPRESSBUTTON(0x45, 12)
        print('Клавиша У', timer3)
        timer3 = time.monotonic()
    else:
        break

Возможно логика программного кода не совсем верная, но это пока то что мне пришло в голову.


Ответы (1 шт):

Автор решения: Arty

Можно реализовать простейший класс Timer для подобных целей, пример реализации и использования ниже:

Попробовать онлайн!

class Timer:
    import time
    def __init__(self):
        self.start()
    def start(self):
        self.t = Timer.time.time()
    def __call__(self):
        return Timer.time.time() - self.t

# Usage
import time
t0, t1, t2 = Timer(), Timer(), Timer()
while True:
    time.sleep(0.01) # Some work
    if t0() >= 0.5:
        print('A', end = '', flush = True)
        t0.start()
    if t1() >= 0.75:
        print('B', end = '', flush = True)
        t1.start()
    if t2() >= 5:
        break

Вывод:

ABABAABABAABABA
→ Ссылка