PythonのSchedularのようなCron
このチュートリアルでは、Linux の cron
ジョブに似たタスクのスケジューリングについて説明します。 まず、インプロセス スケジューラでジョブをスケジュールする schedule
モジュールを見ていきます。
Python の cron
および scheduler
モジュール
Python は、タスクを自動的にスケジュールできるいくつかのパッケージを提供します。 これらのパッケージには schedule
と time
が含まれます。
cron
は、タスクのスケジューリングと自動化に使用されます。 たとえば、特定の時間間隔が経過すると、特定のジョブが自動的に実行を開始します。
多くの場合、手動の介入を必要とせずに定期的に多くのタスクを実行する必要があります。 これは、タスク スケジューラを使用して実現できます。
スケジューリングは、データベースに保存されたデータの管理に役立ち、容易にします。 また、必要に応じて定期的にデータを取得することもできます。
Python の schedule
モジュールは、構成に従って実行するタスクをスケジュールする高度なスケジューリング モジュールです。
cron
は時間ベースのスケジューラです。 定期的に実行する必要があるジョブをスケジュールするのに役立ちます。 Linux cron
ユーティリティの一部である crontab
ファイルには、スケジュールされたタスクのリストが含まれています。
cron
でタスクをスケジュールするには、Bash コマンド crontab -e
または Python の python-crontab
モジュールを使用して、このファイルを直接編集できます。 ただし、これらのスケジューリング スキームは Windows オペレーティング システムでは使用できません。
schedule
は、システムの時間間隔に従って動作するライブラリです。 インプロセス スケジューラとして機能し、ほぼすべてのオペレーティング システムで動作します。
1 日または 1 週間の特定の時間など、特定のタスクをさまざまな時間間隔でスケジュールするのに役立ちます。 それでは、新しい python プロジェクトを作成することから始めましょう。
schedule
モジュールでジョブをスケジュールする
以下の手順に従って、新しい Python プロジェクトを作成します。
-
最初のステップは、anaconda プロンプトをインストールすることです。
-
次に、プロンプト画面で
Jupyter notebook
と入力します。 -
ブラウザ上に Jupyter ノートブックのこの
home
ページが表示されます。 -
New
をクリックし、Python 3
ファイルを作成します。 -
Python ファイルは次のように表示されます。
-
schedule
モジュールの機能を使用する前に、まずschedule
モジュールをインストールする必要があります。pip install schedule
-
必要なモジュールをインポートしたら、ジョブを作成して
スケジュール
するコードを見てみましょう。import schedule import time def job(): print("Reading time...") def coding(): print("Programming time...") def playing(): print("Playing time...") # Time schedule.every(5).seconds.do(job) schedule.every(2).minutes.do(coding) schedule.every().day.at("10:57").do(playing) while True: schedule.run_pending() time.sleep(1)
このコードでは、3つの異なるジョブが定義されています。 最初のジョブ
読み取り時間
は5
秒ごとに繰り返され、2 番目のジョブコーディング
は2
分ごとに繰り返され、最後のジョブは特定の時間になると繰り返されます。while
ループ内のSchedule.run_pending()
関数は、実行が保留されているスケジュールされたジョブがあるかどうかをチェックします。 関数time.sleep(1)
が実行されると、保留中のタスクをチェックするためにschedule
を 1 秒間遅らせます。出力:
数時間後や数分後に特定のジョブを実行するようにスケジューラーに依頼することもできます。 たとえば、
schedule.every(5).hours.do(job)
ステートメントは、5
時間ごとにジョブを繰り返します。