私は最近 Python の学習を始めました。私が作成している単純なアプリの一部には、独自のスレッドで実行される hh:mm:ss 表示のタイマーが含まれています。
Web を見回すと、これを実装する 2 つの方法が見つかりました。
- sched.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: 最大再帰深度を超えました。最大再帰レベルを手動で増やすことができることは知っていますが、ここではこれは必要ないはずですか?
エラーはありませんが、時折、秒がスキップしたり、不規則にカチカチ音をたてたりします。
これを正しく行う方法について、誰かが私を正しい方向に向けることができますか? ありがとうございました。