Navigation

Python multiprocessing で CPU集約的処理の並列化

📅 7月 8, 2025
👤
1 min read

Python multiprocessing で CPU集約的処理の並列化

概要

Pythonのmultiprocessingモジュールを使用すると、CPU集約的な処理を効率的に並列化することができます。これにより、マルチコアCPUを最大限活用して処理時間を短縮することが可能です。特に大規模なデータ処理や計算が必要な場合に有用です。

解決する問題や課題

単一スレッドで処理を行う場合、CPUのコア数分の並行性を活かすことができず、処理時間が長くなるという課題があります。multiprocessingを使用することで、複数のプロセスを使って処理を分散し、並列処理を行うことができます。

前提知識・必要ライブラリ

  • Pythonの基本文法
  • multiprocessingモジュール
  • Python 3.6以上

環境構築


# 必要ライブラリのインストール
pip install multiprocessing

実装コード


# CPU集約的な処理を並列化する例
from multiprocessing import Pool

def square_number(x):
    return x*x

if __name__ == '__main__':
    numbers = [1, 2, 3, 4, 5]
    
    # プロセスプールを作成し、並列処理を行う
    with Pool(processes=4) as pool:
        squared_numbers = pool.map(square_number, numbers)
    
    print(squared_numbers)

使用例


# ファイルの複数行を同時に処理する例
from multiprocessing import Pool

def process_line(line):
    # ここで行の処理を行う
    return processed_line

if __name__ == '__main__':
    with open('data.txt', 'r') as file:
        lines = file.readlines()
    
    with Pool(processes=4) as pool:
        processed_lines = pool.map(process_line, lines)
    
    with open('output.txt', 'w') as output_file:
        output_file.writelines(processed_lines)

テストコード


# テスト対象の関数
def square_number(x):
    return x*x

def test_square_number():
    assert square_number(2) == 4
    assert square_number(5) == 25

応用・カスタマイズ

  • 複数の処理を連結してパイプライン処理を構築する
  • プロセス間通信を活用してデータの共有や連携を行う
  • パフォーマンス最適化のためにプロセス数やチャンクサイズを調整する

関連技術

  • concurrent.futuresモジュール
  • joblibライブラリ
  • Python公式ドキュメントのmultiprocessingガイド

この記事では、Pythonのmultiprocessingモジュールを使用してCPU集約的な処理を並列化する方法について紹介しました。マルチコアCPUを有効活用して処理時間を短縮するために、multiprocessingをうまく活用してみてください。

← Back to Python