本記事では、Pythonのscheduleライブラリの使い方について紹介します。
「schedule」は、Pythonでcron(タスク管理プログラム)のような動きができるライブラリです。
指定した時刻になるとプログラムを実行することができます。
本記事では、「scheduleライブラリのインストール方法」と「scheduleライブラリの実装例」について説明します。
目次
scheduleライブラリのインストール方法と使い方
scheduleライブラリの基本的な使い方について紹介します。
インストール方法
インストール手順は他のライブラリと同様で、pipコマンドを実行することでインストールできます。
1 | pip install schedule |
ライブラリの基本的な使い方
scheduleライブラリの基本的な使い方について紹介します。
scheduleライブラリでタスク管理処理を作る場合以下の2つの処理を記述する必要があります。
・タスクの定義
・タスクがある時刻までWait
タスクの定義には、do()メソッド、Waitにはschedule.run_pending()関数を使用します。
do()メソッドは以下のようなフォーマットで記述します。
1 2 3 4 5 6 7 8 9 | import schedule import time # 5分ごとに「タスク実行」を出力 schedule.every(5).minutes.do( lambda: # 画面に「タスク実行を表示」 print('タスク実行') ) |
上記では、5分ごとに実行する場合の指定例です。
以下のようにdoには関数を指定することもできます。
1 2 3 4 5 6 7 8 9 10 11 | import schedule import time def do_task(): # 画面に「タスク実行を表示」 print('タスク実行') # 5分ごとに「タスク実行」を出力 schedule.every(1).minutes.do(do_task) |
every()は毎回実行のメソッドで引数には間隔を指定します。
minutesは分単位で実行する処理を定義できます。
do()メソッドの引数には中に実行したい処理を記述します。
Wait処理の記述例は以下の通り。
1 2 3 4 5 6 | # タスク監視ループ while True: # 当該時間にタスクがあれば実行 schedule.run_pending() # 1秒スリープ time.sleep(1) |
実行間隔の指定方法
上記で紹介した分単位(minutes)以外にも日単位や時間単位など、様々な単位で実行間隔を指定することができます。
日単位:schedule.every().days
時間単位:schedule.every().hours
分単位:schedule.every().minutes
秒単位:schedule.every().seconds
曜日単位:schedule.every().weeks
月曜日指定:schedule.every().monday ※他の曜日も指定可能
他にもいくつかメソッドがありますが、ひとまず上記の使い方を覚えておきましょう。
以下のように時刻を指定することもできます。
schedule.every().day.at("10:00")
上記の例では毎日午前10:00に処理を実行したい場合の指定例です。
ライブラリの詳細については「scheduleのドキュメント」もお読みください。(英語ですが)
scheduleライブラリの実装例
5分毎にタスク実行する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import schedule import time def do_task(): # 画面に「タスク実行を表示」 print('タスク実行') def main(): # 5分ごとに「タスク実行」を出力 schedule.every(5).minutes.do(do_task) # タスク監視ループ while True: # 当該時間にタスクがあれば実行 schedule.run_pending() # 1秒スリープ time.sleep(1) if __name__ == "__main__": main() |
上記コードを実行すると5分ごとに「'タスク実行'」が画面に表示されます。
以上、scheduleライブラリの使用方法とコードの作成例でした。
Pythonでスケジュール管理する方法については以下の記事にまとめています。
Pythonでスケジュール管理する方法まとめ