Python のマルチプロセスとは

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 バウンドな処理(ネットワーク通信、ファイル読み書きの待ち時間が多い処理)には、マルチスレッドや非同期処理のほうが適していることも多いです。