Python のマルチプロセスは、複数のプロセスを同時に実行して処理を並列化する仕組みです。multiprocessing モジュールを使うことで、CPU を最大限に活用した並列処理が実現できます。
プロセスとスレッドの違い
プロセスとスレッドはどちらも並行処理に使われますが、根本的な違いがあります。
スレッド
同じプロセス内でメモリを共有する。軽量だが、Python では GIL の制約を受ける。
プロセス
独立したメモリ空間を持つ。オーバーヘッドは大きいが、GIL の影響を受けず真の並列処理が可能。
なぜマルチプロセスが必要か
Python には GIL(Global Interpreter Lock)という仕組みがあり、1 つのプロセス内では同時に 1 つのスレッドしか Python コードを実行できません。そのため、CPU バウンドな処理をスレッドで並列化しても、期待した速度向上が得られないことがあります。
マルチプロセスでは各プロセスが独自の Python インタプリタと GIL を持つため、複数の CPU コアを使った真の並列処理が可能になります。
multiprocessing モジュール
Python の標準ライブラリに含まれる multiprocessing モジュールは、プロセスベースの並列処理を提供します。
from multiprocessing import Process def worker(name): print(f"Worker {name} が実行中") if __name__ == "__main__": p = Process(target=worker, args=("A",)) p.start() p.join()
if __name__ == "__main__": のガード節は Windows 環境で必須です。これがないと、子プロセスが再帰的に生成されてしまいます。
マルチプロセスが適しているケース
マルチプロセスは以下のような場面で効果を発揮します。
CPU を大量に使う計算処理(数値計算、画像処理、機械学習など)
複数ファイルの一括処理
並列にデータを変換・集計する処理
一方、I/O バウンドな処理(ネットワーク通信、ファイル読み書きの待ち時間が多い処理)には、マルチスレッドや非同期処理のほうが適していることも多いです。