python: joblibで並列計算
joblibを使って並列計算するときの例
zip
して引数を複数取る時
from joblib import Parallel, delayed def func(a, b): return a * b result = Parallel(n_jobs=-1)([delayed(func)(a, b) for a, b in zip([a_list, b_list])])
result[i]
に1つ1つの結果が入っている。
2重ループ
from joblib import Parallel, delayed def func(i, j): return i+j result = Parallel(n_jobs=-1)([delayed(func)(i, j) for i in range(10) for j in range(10)])
result[i]
に1つ1つの結果が入っている。
返り値が複数ある時は
def func(i, j): return i, j, i+j result = Parallel(n_jobs=-1)([delayed(func)(i, j) for i in range(10) for j in range(10)])
result[i][0], result[i][1], result[i][2]
でそれぞれの値が見れる。
引数
n_jobs
: 使うスレッドの数