Python でのスケジュール

Fariba Laiq 2023年10月10日
  1. スケジュール ライブラリを Python にインストールする
  2. 間隔として秒を使用して定期的にジョブをスケジュールする
  3. ジョブを定期的にスケジュールする間隔として分、時間、および日を使用する
  4. HH:MM 形式の時間を間隔として使用して、定期的にジョブをスケジュールする
  5. 関数デコレーターを使用してジョブをスケジュールする
Python でのスケジュール

このチュートリアルでは、Python の Schedule パッケージを使用して、特定の時間間隔の後に定期的にジョブをスケジュールする方法を示します。

Schedule は、指定された時間間隔で定期的に実行するタスクをスケジュールするために使用される Python の軽量プロセス スケジューラ ライブラリです。

人間にわかりやすい構文を使用して、関数または呼び出し可能なオブジェクトを呼び出して、電子メールの送信、リマインダーの設定、通貨の価格またはビットコインの定期的な取得などのタスクを自動化できます。

スケジュール ライブラリを Python にインストールする

このパッケージを使用するには、まず次のコマンドを使用してこのパッケージをインストールする必要があります。

#Python 3.x
pip install schedule

ジョブをスケジュールするには、次の構文を使用します。

構文:

# Python 3.x
Schedule.every(interval).[timeframe].do(function)

パラメーター:

  1. interval は任意の整数にすることができます。
  2. timeframe は、秒、分、時間、日、または月曜日、火曜日などの曜日の名前にすることもできます。
  3. do() メソッドは、関数名を引数としてスケジュールします。

間隔として秒を使用して定期的にジョブをスケジュールする

次のコードには task という名前のメソッドがあり、5 秒ごとに定期的に実行されるようにスケジュールされています。 every() メソッドへの引数として時間間隔 (この場合は 5 秒) を定義します。

マシンが指定された時間に達すると自動的に実行される do() メソッドの引数として、スケジュールする関数を指定します。 最後に、run_pending() 関数を while ループで実行して、スケジュールされたジョブを継続的に実行します。

出力では、タスクは実行中ですというメッセージがプログラムどおりに 5 秒ごとに表示され続けます。

コード例:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).seconds.do(task)
while True:
    s.run_pending()
    t.sleep(1)

出力:

#Python 3.x
Task is running
Task is running
Task is running
Task is running
Task is running

ジョブを定期的にスケジュールする間隔として分、時間、および日を使用する

間隔を指定された分、時間、または曜日に変更したい場合は、次のようにコードを記述できます。 出力は、設定された時間に従ってメッセージを表示し続けます。

コード例:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).minutes.do(task)
s.every(10).hours.do(task)
s.every().monday.do(task)
while True:
    s.run_pending()
    t.sleep(1)

出力:

#Python 3.x
Task is running
Task is running
Task is running

HH:MM 形式の時間を間隔として使用して、定期的にジョブをスケジュールする

関数への引数として HH:MM:SS 形式で特定の時間を設定することもできます。 メッセージは、指定された間隔ごとに定期的に表示され続けます。

コード例:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every().day.at("04:21").do(task)
s.every().monday.at("12:00").do(task)
while True:
    s.run_pending()
    t.sleep(1)

出力:

#Python 3.x
Task is running

関数デコレーターを使用してジョブをスケジュールする

関数デコレーターは、関数を入力として受け取り、いくつかの機能を追加して、関数を返します。 @repeat を使用して、ここでタスク関数をスケジュールします。

コード例:

# Python 3.x
from schedule import every, run_pending, repeat
import time as t


@repeat(every(5).seconds)
def task():
    print("Task is running")


while True:
    run_pending()
    t.sleep(1)

出力:

#Python 3.x
Task is running
Task is running
Task is running

一度にジョブを実行する

CancelJob をスケジュールインスタンスで使用して、実行後にジョブをキャンセルすることで、一度にジョブを実行できます。

コード例:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")
    return s.CancelJob


s.every(5).seconds.do(task)
while True:
    s.run_pending()
    t.sleep(1)

出力:

#Python 3.x
Task is running

すべてのジョブをキャンセル

スケジューラーインスタンスで clear() メソッドを使用して、スケジューラーからすべてのジョブをキャンセルできます。 ここでは、get_jobs() メソッドを使用して、スケジュールされたジョブをスケジューラから出力しました。

コード例:

# Python 3.x
import schedule as s
import time as t


def task():
    print("Task is running")


s.every(5).seconds.do(task)
print("Jobs:", s.get_jobs())
s.clear()
print("Jobs:", s.get_jobs())

出力:

#Python 3.x
Jobs: [Every 5 seconds do task() (last run: [never], next run: 2022-04-08 16:59:37)]
Jobs: []
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn