Open2
joblib使い方メモ
Pythonの並列化はjoblibの並列化が一番使いやすいように思う。ただ構文が覚えにくいのでメモする。
公式サイトにある使い方
from joblib import Parallel, delayed
from math import sqrt
Parallel(n_jobs=1)(delayed(sqrt)(i**2) for i in range(10))
わかりにくいので分解してみる。
p = Parallel(n_jobs=-1, verbose=1)
args = (delayed(sqrt)(i**2) for i in range(10)) #generator
ans = p(args)
つまりParallelインスタンスに引数(generator, 関数とその引数をパックしたもの)を渡している。
delayed はデコレータでdelayed(np.sqrt)は関数を返す。その関数に引数を与えると関数と引数の一覧を返す。
delayed(np.sqrt)(3) # -> (<ufunc 'sqrt'>, (3,), {})