メインコンテンツへスキップ

Pythonのmultiprocessingを使った並列計算

·456 文字·1 分
目次

はじめに
#

Pythonの標準ライブラリmultiprocessingを使って並列計算を行う。

環境
#

ソフトウェア バージョン
python 3.7.4

各並列処理間でデータを共有せず並列計算を行う場合
#

並列化した各処理間でデータを共有せずに並列計算を行う場合、multiprocessingモジュールのPoolクラスを使うだけで良い。 次のプログラムでは、0から9までの各整数の2乗を計算する。

import multiprocessing as mp

def square(x):
    return x*x
    
if __name__ == "__main__":
    with mp.Pool(processes=2) as pool:
        result = pool.map(square, range(10))
    print(result)

実行結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

上記のプログラムを開設する。Poolクラスは

if __name__ == "__main__":

の中で始める必要がある。

また、Poolの引数は、使用するワーカープロセスの数(並列計算プロセス数)である。作成したPoolオブジェクトpoolmapメソッドに対し、第1引数に関数、第2引数に関数の引数(イテレータ形式)を渡す。

さらに、計算終了後にPoolオブジェクトを消去する必要がある。with構文を使わない場合、以下のようにcloseメソッドを使う。

pool = mp.Pool(processes=2)
result = pool.map(square, range(10)))
pool.close()

参考
#

multiprocessing — プロセスベースの並列処理 — Python 3.9.1 ドキュメント

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

BeautifulSoupを使ったXMLの解析
·2390 文字·5 分
BeautifulSoupを使ってXMLを解析(parse)する。
NumPyで使える統計の関数
·673 文字·2 分
NumPyで利用できる統計の関数について。
NumPyで使える数学の関数
·1031 文字·3 分
NumPyで利用できる数学の関数について。
NumPy配列の演算
·1222 文字·3 分
NumPy配列の四則演算と線形代数学の演算について。
NumPy配列の操作
·1325 文字·3 分
NumPy配列のコピーや次元の結合、結合・分割、ソートについて。
NumPy配列の確認
·975 文字·2 分
作成したNumPy配列の要素などを確認する。