Niedawno zacząłem uczyć się Pythona, a część prostej aplikacji, którą robię, zawiera zegar z wyświetlaniem hh: mm: ss w swoim wątku.Python sched.scheduler przekracza maksymalną głębokość rekurencji
Rozglądając się po internecie znalazłem dwa sposoby realizacji tego:
- Korzystanie sched.scheduler
- Korzystanie threading.Timer
Sposób Zrobiłem to wygląda podobnie dla obu implementacjach:
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)
Timer:
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)
działa dobrze w odniesieniu do materacy prawidłowo, ale generuje następujący błąd po kilku minutach: RuntimeError: maksymalna głębokość rekursji przekroczone. Wiem, że możesz ręcznie zwiększyć maksymalny poziom rekurencji, ale z pewnością nie powinno to być tutaj potrzebne?
Brak błędu, ale czasami sekundy będą pomijane lub nieregularne zaznaczanie.
Czy ktoś może wskazać mi właściwy kierunek postępowania? Dziękuję Ci.
Proszę zaksięgować znaleziony link do używania threading.Timer w ten sposób. –
Twój tytuł pytania jest całkowicie błędny. Masz timer przekraczający głębokość rekursji. Nie sched.scheduler. –
Przepraszam, jeśli nie byłam jasna. Edytowane pytanie. Propozycja użycia timera pochodzi stąd Należy pamiętać, że jestem tylko początkującym i prawdopodobnie mam zły pomysł. –
user171331