【Pythonアプリ入門】定期的に処理を実行するアプリの作り方(Scheduleモジュール)

Python
けんろう
けんろう

この記事では、Pythonで定期的に処理を実行するアプリの作り方を紹介します。 

Pythonで定期的に処理を実行する方法は、複数のやり方があります。
皆さんが作成したいプログラム構造によって、選択してもらえばよいかと思います。

・Scheduleモジュールを利用する方法

・並列処理

・tkinterを利用する方法

今回は、Scheduleモジュールを利用した方法を紹介します。

その他の方法は、以下の記事で紹介しています。

この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。

この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。

人工知能技術専門プログラミングスクール「AIジョブカレ」の無料説明会参加、講座申込み
スポンサーリンク

Scheduleモジュールを利用する方法

scheduleモジュールは、一定の間隔(数分・数時間・数日おき)で同じ作業を実行できるようにプログラミングできるモジュールです。例えば下記のような使い方ができます。

  • 1秒毎に、受信データを確認する
  • 1日3回データを自動集計する
  • 1週間おきに通知メールを送信する

Scheduleモジュールを使うには、Scheduleモジュールのインストールが必要となります。

準備

Scheduleモジュールは、以下のコマンドでインストールします。

pip install schedule

Scheduleモジュールについては、以下の公式サイトを参照ください。

Scheduleモジュールの使い方を理解するために、サンプルアプリを作ってみましょう

サンプルアプリ

2秒毎に、”job1”をコンソールに表示
1分毎に、”job2”をコンソールに表示
毎23秒で、”job3”をコンソールに表示

サンプルコード

#!usr/bin/env python
# -*- coding: utf-8 -*-

import schedule
import time
import datetime

def job1():
    print("job1",datetime.datetime.now())

def job2():
    print("job2",datetime.datetime.now())

def job3():
    print("job3",datetime.datetime.now())


schedule.every(2).seconds.do(job1)  # 関数job1を、2秒毎に実行する
schedule.every(1).minutes.do(job2)  # 関数job2を、1分毎に実行する

schedule.every().minutes.at(":23").do(job3)  # 関数job3を、毎23秒に実行する

print("start",datetime.datetime.now())

while True:
    schedule.run_pending()
    time.sleep(1)

動かし方

実行すると、コンソールに、以下が表示されます。

start 2022-05-27 01:06:06.875304
job1 2022-05-27 01:06:08.897842
job1 2022-05-27 01:06:10.907665
job1 2022-05-27 01:06:12.919593
job1 2022-05-27 01:06:14.933279
job1 2022-05-27 01:06:16.946531
job1 2022-05-27 01:06:18.962138
job1 2022-05-27 01:06:20.970096
job1 2022-05-27 01:06:22.976339
job3 2022-05-27 01:06:23.992652
job1 2022-05-27 01:06:25.004957
job1 2022-05-27 01:06:27.017501
job1 2022-05-27 01:06:29.028317
job1 2022-05-27 01:06:31.051633
job1 2022-05-27 01:06:33.069708
job1 2022-05-27 01:06:35.078751
job1 2022-05-27 01:06:37.100749
job1 2022-05-27 01:06:39.109240
job1 2022-05-27 01:06:41.127248
job1 2022-05-27 01:06:43.181906
job1 2022-05-27 01:06:45.192993
job1 2022-05-27 01:06:47.202303
job1 2022-05-27 01:06:49.211285
job1 2022-05-27 01:06:51.224089
job1 2022-05-27 01:06:53.234333
job1 2022-05-27 01:06:55.247830
job1 2022-05-27 01:06:57.253516
job1 2022-05-27 01:06:59.260873
job1 2022-05-27 01:07:01.272713
job1 2022-05-27 01:07:03.280923
job1 2022-05-27 01:07:05.291762
job2 2022-05-27 01:07:07.309367
job1 2022-05-27 01:07:07.310033
job1 2022-05-27 01:07:09.323156
job1 2022-05-27 01:07:11.330402
job1 2022-05-27 01:07:13.355193
job1 2022-05-27 01:07:15.384023
job1 2022-05-27 01:07:17.389562
job1 2022-05-27 01:07:19.414684
job1 2022-05-27 01:07:21.439931
job3 2022-05-27 01:07:23.459317
job1 2022-05-27 01:07:23.459964
job1 2022-05-27 01:07:25.475904
job1 2022-05-27 01:07:27.500644
job1 2022-05-27 01:07:29.528673
job1 2022-05-27 01:07:31.539437

Scheduleモジュールの使い方

処理コマンド
3秒毎に関数jobを実行するschedule.every(3).seconds.do(job)
3分毎に関数jobを実行するschedule.every(3).minutes.do(job)
3時間毎に関数jobを実行するschedule.every(3).hours.do(job)
3日毎に関数jobを実行するschedule.every(3).days.do(job)
3週間毎に関数jobを実行するschedule.every(3).weeks.do(job)
毎23秒になる度に関数jobを実行する  schedule.every().minute.at(“:23”).do(job)    
毎42分になる度に関数jobを実行する  schedule.every().hour.at(“:42”).do(job)
5時間毎に、20分30秒になる度に関数jobを実行するschedule.every(5).hours.at(“20:30”).do(job)
毎日、10時30分に、関数jobを実行するschedule.every().day.at(“10:30”).do(job)
毎日、10時30分42秒に、関数jobを実行するschedule.every().day.at(“10:30:42”).do(job)
毎月曜日に、関数jobを実行するschedule.every().monday.do(job)
毎水曜日に、13時15分に関数jobを実行するschedule.every().wednesday.at(“13:15”).do(job)

\ Pythonを勉強するなら、環境構築が楽で安いラズパイがオススメです /

まとめ

今回は、Pythonライブラリである、Scheduleモジュールを使って、定期的に処理を実行する方法を紹介しました。

コメント

タイトルとURLをコピーしました