Open2

joblib使い方メモ

retrofocusretrofocus

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, 関数とその引数をパックしたもの)を渡している。

retrofocusretrofocus

delayed はデコレータでdelayed(np.sqrt)は関数を返す。その関数に引数を与えると関数と引数の一覧を返す。

delayed(np.sqrt)(3) # -> (<ufunc 'sqrt'>, (3,), {})