Đây là một ví dụ đơn giản tương thích với APScheduler 3.00+:
# note that there are many other schedulers available
from apscheduler.schedulers.background import BackgroundScheduler
sched = BackgroundScheduler()
def some_job():
print('Every 10 seconds')
# seconds can be replaced with minutes, hours, or days
sched.add_job(some_job, 'interval', seconds=10)
sched.start()
...
sched.shutdown()
Ngoài ra, bạn có thể sử dụng như sau. Không giống như nhiều lựa chọn thay thế, bộ hẹn giờ này sẽ thực thi mã mong muốn cứ mỗi n giây chính xác (không phụ thuộc vào thời gian để mã thực thi). Vì vậy, đây là một lựa chọn tuyệt vời nếu bạn không có khả năng trôi dạt.
import time
from threading import Event, Thread
class RepeatedTimer:
"""Repeat `function` every `interval` seconds."""
def __init__(self, interval, function, *args, **kwargs):
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.start = time.time()
self.event = Event()
self.thread = Thread(target=self._target)
self.thread.start()
def _target(self):
while not self.event.wait(self._time):
self.function(*self.args, **self.kwargs)
@property
def _time(self):
return self.interval - ((time.time() - self.start) % self.interval)
def stop(self):
self.event.set()
self.thread.join()
# start timer
timer = RepeatedTimer(10, print, 'Hello world')
# stop timer
timer.stop()
Liên quan: [Cách tốt nhất để lặp lại thực hiện hàm mỗi x giây bằng Python là gì?] (Http://stackoverflow.com/q/474528/4279) – jfs