けんろう
この記事では、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モジュールを使って、定期的に処理を実行する方法を紹介しました。
- 【PythonでGUIアプリ入門】PySimpleGUI、Pyperclip を使った クリップボードアプリ の作り方
- 【PythonでGUIアプリ入門】PySimpleGUI を使った タイマーストップアプリ の作り方
- 【Python(PySimpleGUI)でGUIアプリ入門】Pythonアプリを起動するランチャソフトの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIによるPCカメラ映像を使った映像加工アプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIを使った、メディアプレイヤーアプリの作り方
リンク
コメント