【Pythonアプリ入門】定期的に処理を実行するアプリの作り方(並列処理で実現)

Python
けんろう
けんろう

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

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

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

・並列処理

・tkinterを利用する方法

今回は、並列処理で実現する方法を紹介します。

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

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

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

Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクールの無料説明会
スポンサーリンク

並列処理を利用した方法

並列処理とは、複数のタスクをそれぞれ独立で動かすことができるプログラム構造のことです。

例えば、以下のような処理を記述できます。

UART受信タスクを100ms毎に起動して受信監視しつつ、
UART送信タスクを1000ms毎に起動して上位アプリからUART送信要求を処理する

並列処理での定期処理を理解するために、サンプルアプリを作ってみましょう

サンプルアプリ

0.5秒毎に、コンソールにメッセージを表示
2秒毎に、コンソールにメッセージを表示

サンプルコード

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

import threading
import time
import datetime

def task(t,thread_num):

    while True:
        print("スレッド {} でのtask関数起動".format(thread_num),datetime.datetime.now())
        time.sleep(t)

# task関数をスレッド1で起動(引数として0.5と1を渡す)
thread1 = threading.Thread(name="thread1", target=task, args=(0.5,1))
# task関数をスレッド2で起動(引数として2と2を渡す)
thread2 = threading.Thread(name="thread2", target=task, args=(2,2))

# スレッド1開始
thread1.start()

# スレッド2開始
thread2.start()

動かし方

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

スレッド 1 でのtask関数起動 2022-06-05 01:48:24.102601
スレッド 2 でのtask関数起動 2022-06-05 01:48:24.103075
スレッド 1 でのtask関数起動 2022-06-05 01:48:24.608122
スレッド 1 でのtask関数起動 2022-06-05 01:48:25.113783
スレッド 1 でのtask関数起動 2022-06-05 01:48:25.614818
スレッド 2 でのtask関数起動 2022-06-05 01:48:26.119549
スレッド 1 でのtask関数起動 2022-06-05 01:48:26.119549
スレッド 1 でのtask関数起動 2022-06-05 01:48:26.629824
スレッド 1 でのtask関数起動 2022-06-05 01:48:27.145689
スレッド 1 でのtask関数起動 2022-06-05 01:48:27.661578
スレッド 2 でのtask関数起動 2022-06-05 01:48:28.123503
スレッド 1 でのtask関数起動 2022-06-05 01:48:28.171654
スレッド 1 でのtask関数起動 2022-06-05 01:48:28.677259
スレッド 1 でのtask関数起動 2022-06-05 01:48:29.184415
スレッド 1 でのtask関数起動 2022-06-05 01:48:29.699580

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

まとめ

今回は、並列処理を使って、定期的に処理を実行する方法を紹介しました。

コメント

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