title
Python3を簡単スケジューリング!「schedule」の試行と解説
[url] python3-schedule [overview] Python3のロジックを、簡単にスケジュール実行したくありませんか?
「schedule」というライブラリで簡単にスケジューリングできます!
今回はコレを試行&解説してみました!
[mini tilte] Python3を簡単スケジューリング!「schedule」の試行と解説
Python3のロジックを、簡単にスケジュール実行したくありませんか?
「schedule」というライブラリで簡単にスケジューリングできます!
今回はコレを試行&解説してみました!
インストール
pipでインストールできます。
pip install schedule
サンプルソース
こんな感じで作ってみました!
# -*- coding: utf-8 -*- import schedule import time def printTime(msg): print(msg + time.ctime()) def job1(): printTime("job1 ") def job2(): printTime("job2 ") def job3(): printTime("job3 ") def job4(): printTime("job4 ") def job5(): printTime("job5 ") # 5分間隔 schedule.every(5).minutes.do(job1) # 毎時 schedule.every().hour.do(job2) # 時刻指定 schedule.every().day.at("23:01").do(job3) # 木曜日 schedule.every().thursday.do(job4) # 木曜日の00:01 schedule.every().thursday.at("00:01").do(job5) # 実行ループ printTime("Start ") while True: schedule.run_pending() time.sleep(1)
実行結果
こんな感じで実行されました!
Start Wed Aug 1 22:58:08 2018 job3 Wed Aug 1 23:01:00 2018 job1 Wed Aug 1 23:03:08 2018 job1 Wed Aug 1 23:08:08 2018 job1 Wed Aug 1 23:13:08 2018 job1 Wed Aug 1 23:18:08 2018 job1 Wed Aug 1 23:23:09 2018 job1 Wed Aug 1 23:28:09 2018 job1 Wed Aug 1 23:33:09 2018 job1 Wed Aug 1 23:38:09 2018 job1 Wed Aug 1 23:43:09 2018 job1 Wed Aug 1 23:48:09 2018 job1 Wed Aug 1 23:53:10 2018 job2 Wed Aug 1 23:58:09 2018 job1 Wed Aug 1 23:58:10 2018 job5 Thu Aug 2 00:01:00 2018 job1 Thu Aug 2 00:03:10 2018 job1 Thu Aug 2 00:08:10 2018
なんかjob4(木曜日に実行)がうまく動かなかった……
job5の影響でしょうかね……
処理の流れ
「schedule.every()」で始まるものがスケジュールの登録処理になります。
今回のサンプルは
- 「分」間隔
- 「時間」間隔
- 時刻指定
- 曜日指定
- 曜日と時刻指定
を設定し、それぞれの現在時刻を出力させました。
スケジュール登録後、「実行ループ」の部分に行きます。
そこで
- スケジュール待ち
- 1秒待機
無限ループします。
実行ループは、公式のサンプルが、このように作ってるので問題ないかと!
https://schedule.readthedocs.io/en/stable/#usage
スケジュール登録について
「schedule.every()」の箇所に書かれている箇所のようにして、スケジュール登録をします。
everyの引数
everyの引数は、インターバル時間です。
指定しなければ「1」となります。
every.「XXX」
「schedule.every().」に続くものは、これらが使用できます。
- second
- seconds
- minute
- minutes
- hour
- hours
- day
- days
- week
- weeks
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
時分秒、日、週、曜日が指定できるようですね。
その他ロジック解説
それでは各ロジックの詳細を見ていきましょう!
import
importは
- import schedule
- import time
の2つはマストで行います。
scheduleは言わずもがな、今回のメインである機能を使うため。
そしてtimeは、実行ループに使用します。
ループのスリープ用です。
printTime()
「引数のメッセージ + 現在時刻」を出力するだけの処理。
jobX()
各スケジュール処理が実行されたらコールする関数です。
今回はそれぞれのスケジューラで、別々の出力がされることが確認したかったので、関数を分けました!
もちろん同じ関数をコールでもOK!
参考
これらのページを参考にしました。
ありがとうございます!