下面是一個簡單的例子與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()
或者,你可以使用下面的。與許多替代方案不同,此計時器將精確地執行所需的代碼(無論代碼執行所花費的時間),每隔012秒鐘執行一次所需的代碼。所以如果你無法承受任何漂移,這是一個很好的選擇。
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()
來源
2015-10-10 14:14:04
Six
相關:什麼是Python中重複執行的函數,每x秒的最佳方式(http://stackoverflow.com/q/474528/4279) – jfs 2015-07-16 20:10:58