Недавно я начал изучать Python, и часть простого приложения, которое я делаю, включает таймер с отображением в формате чч:мм:сс, работающий в отдельном потоке.
Просматривая Интернет, я нашел два способа реализовать это:
- Использование расписания.scheduler
- Использование threading.Timer
То, как я это сделал, выглядит одинаково для обеих реализаций:
запланировано:
def tick(self, display, alarm_time):
# Schedule this function to run every minute
s = sched.scheduler(time.time, time.sleep)
s.enter(1, 1, self.tick, ([display, alarm_time]))
# Update the time
self.updateTime(display)
Таймер:
def tick(self, display):
# Schedule this function to run every second
t = Timer(1, self.tick, (display,alarm_time))
t.start()
# Update the time
self.updateTime(display)
Работает нормально в отношении правильной пометки, но через несколько минут генерирует следующую ошибку: RuntimeError: превышена максимальная глубина рекурсии. Я знаю, что вы можете увеличить максимальный уровень рекурсии вручную, но ведь в этом нет необходимости?
Ошибки нет, но иногда секунды пропускаются или тикают неравномерно.
Может кто-нибудь указать мне в правильном направлении, как это сделать правильно? Спасибо.