Gần đây tôi đã bắt đầu học Python và một phần của ứng dụng đơn giản mà tôi đang thực hiện bao gồm bộ hẹn giờ với màn hình hh: mm: ss chạy theo chủ đề riêng.Python sched.scheduler vượt quá độ sâu đệ quy tối đa
Nhìn khắp nơi trên web tôi thấy hai cách để thực hiện điều này:
- Sử dụng sched.scheduler
- Sử dụng threading.Timer
Con đường tôi đã làm nó trông tương tự cho cả hai hiện thực:
lịch:
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)
Hoạt động tốt liên quan đến việc đánh dấu một cách chính xác, nhưng tạo ra các lỗi sau sau một vài phút: RuntimeError: độ sâu đệ quy tối đa vượt quá. Tôi biết bạn có thể tăng mức đệ quy tối đa bằng tay, nhưng chắc chắn điều này không cần thiết ở đây?
Không có lỗi, nhưng đôi khi giây sẽ bỏ qua hoặc đánh dấu bất thường.
Ai đó có thể vui lòng chỉ cho tôi đúng hướng để làm điều này một cách chính xác? Cảm ơn bạn.
Vui lòng đăng liên kết bạn tìm thấy để sử dụng luồng.Timer như thế này. –
Tiêu đề câu hỏi của bạn hoàn toàn sai. Bạn có Bộ đếm thời gian vượt quá độ sâu đệ quy. Không phải sched.scheduler. –
Xin lỗi nếu tôi không rõ ràng. Câu hỏi đã chỉnh sửa. Đề xuất sử dụng Bộ hẹn giờ xuất phát từ đây Xin lưu ý rằng tôi chỉ là người mới bắt đầu và có lẽ đã có ý tưởng sai. –
user171331