sched.scheduler
ここの代わりに使用することを検討してthreading.Timer
ください。注意すべきいくつかの違いがあります。
sched.scheduler
スレッドではなく、メイン プロセスですべてを実行します。
- 現在のプロセスに数秒以上かかる場合
delay
、スケジュールされたイベントは、現在の呼び出しが
完了した後に開始されます。動作が異なります。 で実行される作業に
1 時間以上かかる場合、複数のスレッドが
同時に実行されます。interval
threading.Timer
interval
interval
interval
複数を同時に実行したくないと思うので、sched.scheduler
ここではthreading.Timer
.
import timeit
import sched
import time
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(level = logging.DEBUG,
format = '%(threadName)s: %(asctime)s: %(message)s',
datefmt = '%H:%M:%S')
schedule = sched.scheduler(timeit.default_timer, time.sleep)
delay = 5 # change to 3600 to schedule event in 1 hour
def interval():
logger.info('All work and no play makes Jack a dull boy.')
schedule.enter(delay = delay, priority = 1, action = interval, argument = ())
# Uncomment this to see how scheduled events are delayed if interval takes a
# long time.
# time.sleep(10)
schedule.enter(delay = 0, priority = 1, action = interval, argument = ())
try:
schedule.run()
except (KeyboardInterrupt, SystemExit):
print('Exiting')
sys.exit()