PythonはGIL(グローバルインタプリタロック)というものがかかっており、基本的にただコードを書いただけでは複数のCPUコアがある場合にそのリソースを全て使い切ることが出来ません。しかし、大量のデータを処理する時などにはマシンのCPUリソースを全て使って出来るだけ高速に計算させたい時があります。
Pythonで並列処理を行うためには、Joblibというライブラリを使用します。Joblibは、Pythonの並列処理を容易に行うためのライブラリです。Joblibを使用すると、複数のプロセスを同時に実行することができます。
from joblib import Parallel, delayed
def process(n):
return sum([i*n for i in range(100000)])
# 繰り返し計算 (並列化)
r = Parallel(n_jobs=-1)([delayed(process)(i) for i in range(10000)])
print(sum(r))
上記のコードは、process
関数を10000回呼び出す並列処理を行います。Parallel
とdelayed
を組み合わせることによってマルチプロセスの並列化を実現することが出来ます。
Joblibで並列処理を行う場合のデフォルトは「マルチプロセス」のようです。これにより、プログラムを効率的に実行することができ、処理時間を短縮することができます。
Joblibは、Pythonでの並列処理を容易に行うためのライブラリで、その使用は非常に簡単です。この記事を通じて、PythonとJoblibを用いた並列処理の基本的な知識を得ることができたことを願っています。