Pythonでプログラムの効率を上げたいと考えたとき、「スレッド処理」は欠かせないテクニックのひとつです。特に、時間のかかる処理を並列に行いたいときに威力を発揮します。
この記事では、初心者でもわかるように、Pythonにおけるスレッド処理の基本と使い方をやさしく解説します。
本記事で学べること
- スレッドの基本概念と、Pythonにおけるスレッドの役割
- マルチスレッドとマルチプロセスの違いと適切な使い分け方
- Pythonの
threading
モジュールを使った基本的なスレッド処理の書き方 - 複数スレッドの同時実行方法と、その具体的なコード例
- スレッド処理で気をつけるべき注意点(リソース競合やLockの使い方など)
日本では現在、ITエンジニアの人材不足が深刻化しており、
それに伴いエンジニアの需要が急速に高まっています。
プログラミングスキルを身につけることで、以下のような多くのメリットが得られます。
✅ 転職市場での競争力が向上し、収入アップのチャンスが広がる
✅ 副業として活用でき、収入源を増やせる
✅ プログラマーに限らず、IT時代を生き抜く武器になる
もし少しでも興味があるなら、まずはプログラミングスクールの無料体験を試してみるのがおすすめです。
スレッドとは?
スレッド(Thread)とは、プログラム内で実行される軽量な処理の流れ(実行単位)のことです。通常、Pythonではプログラムが「一行ずつ順番に」実行されますが、スレッドを使えば複数の処理を同時に進めることができます。
スレッドの主な用途
- ファイルの読み書きやネットワーク処理の同時実行
- UI(ユーザーインターフェース)の応答性を保つ処理
- 時間のかかる処理をバックグラウンドで実行
マルチスレッドとマルチプロセスの違い
項目 | マルチスレッド | マルチプロセス |
---|---|---|
メモリ共有 | 同じメモリ空間を使用 | メモリはプロセスごとに分離 |
実行の軽さ | 軽量で起動も早い | 起動にオーバーヘッドがある |
Pythonでの制限 | GILによりCPU並列は制限される | 完全な並列処理が可能 |
適している処理 | I/O待ち(ネット・ファイル) | CPU負荷の高い処理 |
※GIL(Global Interpreter Lock)とは、Pythonにおいて同時にひとつのスレッドしか実行できない制限のことです。
Pythonでスレッドを使う方法
Pythonでスレッド処理を行うには、標準ライブラリのthreading
モジュールを使います。
基本的なコード例
import threading
import time
def task():
print("処理開始")
time.sleep(2)
print("処理終了")
# スレッドを作成して実行
thread = threading.Thread(target=task)
thread.start()
print("メインスレッド処理")
ポイント解説
Thread
クラスを使ってスレッドを作成target
で実行したい関数を指定.start()
でスレッドを開始- メインスレッドと並行して動作する
複数スレッドの同時実行例
def task(n):
print(f"{n}番目の処理開始")
time.sleep(2)
print(f"{n}番目の処理終了")
# 複数スレッドを作成・実行
for i in range(3):
thread = threading.Thread(target=task, args=(i,))
thread.start()
このようにすれば、3つのタスクがほぼ同時に開始され、それぞれ2秒後に終了します。
スレッド使用時の注意点
- 共有リソースの競合に注意:複数スレッドが同じ変数やファイルにアクセスするとバグの原因になります。
- 排他制御が必要な場合はLockを使う:
lock = threading.Lock()
with lock:
# 排他的に処理するコード
- CPUをフル活用したい場合はmultiprocessingの方が適している
まとめ|Pythonのスレッド処理で処理を効率化しよう
Pythonのスレッド処理は、I/O待ちの多い処理を効率化したいときに非常に有効です。初心者でも基本的な使い方を理解すれば、簡単にマルチスレッド処理を実装できます。
覚えておきたいポイント
threading.Thread
で簡単にスレッドを作成できる- GILの存在により、CPU並列処理には限界がある
- 排他制御(Lock)でデータの競合を防ぐことが重要
コメント