Pythonでマルチスレッドを行ってみる
Pythonでマルチスレッドを行ってみます。マルチスレッドを行うことで、1つのプログラムで複数の処理を並列に実行することが出来ます。
マルチスレッドの詳細については下記のサイトで丁寧に説明しているので、確認してください。
連載.NETマルチスレッド・プログラミング入門:
第1回 マルチスレッドはこんなときに使う
http://www.atmarkit.co.jp/ait/articles/0503/12/news025.html
マルチスレッドプログラム
import threading
thread = threading.Thread(target=関数名)
thread.start()
マルチスレッドを使用するためにはthreadingのimportが必要です。
その後、Thread(target=関数名)でマルチスレッドを行う関数を定義し、startで起動します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import threading import logging import time logging.basicConfig(level=logging.DEBUG, format='%(threadName)s: %(message)s') def worker1(): logging.debug('START ②') time.sleep(3) logging.debug('END ②') def worker2(): logging.debug('START ③') time.sleep(6) logging.debug('END ③') if __name__ == '__main__': logging.debug('START ①') thread1 = threading.Thread(target=worker1) thread2 = threading.Thread(target=worker2) thread1.start() thread2.start() logging.debug('END ①') |
実行例
1 2 3 4 5 6 |
MainThread: START ① Thread-1: START ② Thread-2: START ③ MainThread: END ① Thread-1: END ② Thread-2: END ③ |
ソースコードの流れ
このソースコードでは、1つのメインスレッドとそのメインスレッドから起動される2つのスレッドの計3つのスレッドを用意しています。
1. まず、はじめにメインスレッドが起動され、"START ①"を表示します。
2, 次にworker1、worker2という関数名のスレッドを作成し、それぞれのstartを行います。
3. worker1が開始され、"START ②"を表示します。その後worker1は3秒停止します。
4. worker2が開始され、"START ③"を表示します。その後worker2は6秒停止します。
5. メインスレッドで"END ①"を表示します。
6. 3秒停止していたworker1が動き出し、"END ②"を表示します。
7. 6秒停止していたworker2が動き出し、"END ③"を表示します。