下記のような並列化処理の場合、sqrt(...)が100回も実行されるので、各実行毎に
下の「accumulator += results」が実行される(100回)のでしょうか、それとも
100回のsqrt(...)が全部実行された後、「accumulator += results」が1回だけ実行されるのでしょうか。
Python
1import joblib 2accumulator = 0 3results = Parallel(delayed(sqrt)(accumulator + i ) for i in range(100)) 4 5accumulator += results 6
> sqrt(...)が100回も実行される
のは「results = Parallel(...」の行で、それが全部終わった後に「accumulator += results」は実行されるので、
> 100回のsqrt(...)が全部実行された後、「accumulator += results」が1回だけ実行される
でしょう
「Parallel(...」の行以外の行が勝手に100回も実行されたら、困りますよね
お返事ありがとうございます ❣ 💛
> 100回のsqrt(...)が全部実行された後、「accumulator += results」が1回だけ実行される
そうしたら、sqrt(...)が100回も実行されたので、一回だけ実行された「accumulator += results」の中のresultsはどのsqrt(...)のリターン値でしょうか。
動くコードじゃないと質問の意味がない(というか質問にならない)んじゃないでしょうか
「results」には、100回分の結果が全部入ってます
https://note.nkmk.me/python-joblib-parallel-usage/
の「joblib.Parallelによるシンプルな並列処理」を見てください

回答2件
あなたの回答
tips
プレビュー