Recientemente comencé a aprender Python y parte de la sencilla aplicación que estoy haciendo incluye un temporizador con una pantalla hh: mm: ss ejecutándose en su propio hilo.Python sched.scheduler excede la profundidad máxima de recursión
Mirando alrededor de la web me encontré con dos formas de implementar esta:
- Uso sched.scheduler
- Uso threading.Timer
La forma en que lo hice es similar para ambas implementaciones:
sched:
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)
Temporizador:
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)
funciona bien con respecto a marcando correctamente, pero genera el siguiente error después de unos minutos: RuntimeError: máximo nivel de recursividad superó. Sé que puede aumentar el nivel máximo de recursión manualmente, pero seguramente esto no debería ser necesario aquí.
No hay error, pero ocasionalmente los segundos se saltan o marcan de forma irregular.
¿Puede alguien indicarme en la dirección correcta cómo hacer esto correctamente? Gracias.
Por favor, publique el enlace que encontró para usar threading.Timer como este. –
El título de su pregunta es completamente incorrecto. Tiene un temporizador que excede la profundidad de recursión. No es sched.scheduler. –
Lo siento si no estaba claro. Pregunta editada La sugerencia de usar el temporizador vino de aquí Tenga en cuenta que soy solo un principiante y probablemente tenga una idea equivocada. –
user171331