回答編集履歴

2

間違えの指摘を受けたので修正s

2022/06/07 04:18

投稿

TakaiY
TakaiY

スコア12657

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Parallelによる処理は以下のように書かれることが多いです。(質問にあるものは間違えています)
4
4
  ```python
5
- Parallel(n_jobs=3)(delayed(sqrt)(i**2) for i in range(10))
5
+ Parallel(n_jobs=3)(delayed(sqrt)(i**2) for i in range(10))
6
6
  ```
7
7
  これは2つに分けて考えます。
8
8
  ```python
@@ -14,7 +14,7 @@
14
14
  ```python
15
15
  (delayed(sqrt)(i**2) for i in range(10))
16
16
  ```
17
- これは、タプルの内包表記で、10個のdelayed要素のタプルです。
17
+ これは、~~タプルの内包表記~~ジェネレータ式で、10個のdelayed要素を生成するジェネレタを返します。ジェネレータは読むたびにリスト要素を返すオブジェクトです。
18
18
  delayedもjoblibの関数で、delayed(A)(B) としたとき、実行すると関数Aに引数としてBを適用します。
19
19
  そしてParallelのインスタンスに渡すと、これを並列で実行してくれて、それぞれの結果をタプルにして返します。
20
20
 

1

間違えを修正

2022/06/07 02:50

投稿

TakaiY
TakaiY

スコア12657

test CHANGED
@@ -20,11 +20,11 @@
20
20
 
21
21
  ということで、質問のやつだと、
22
22
  ```python
23
- results = Parallel(delayed(sqrt)(accumulator + i ) for i in range(100))
23
+ results = Parallel(n_jobs=3)(delayed(sqrt)(accumulator + i ) for i in range(100))
24
24
  #↓
25
- results = Parallel(delayed(sqrt)(0 + i ) for i in range(100))
25
+ results = Parallel(n_jobs=3)(delayed(sqrt)(0 + i ) for i in range(100))
26
26
  #↓
27
- results = Parallel(delayed(sqrt)(0 + 0), delayed(sqrt)(0 + 1), ... delayed(sqrt)(0 + 99), )
27
+ results = Parallel(n_jobs=3)(delayed(sqrt)(0 + 0), delayed(sqrt)(0 + 1), ... delayed(sqrt)(0 + 99), )
28
28
  #↓
29
29
  results = (0, 1 , 1.41..., 1.73..., 2, ... 9.94...)
30
30
  ```
@@ -36,11 +36,3 @@
36
36
  ```
37
37
  がどのような意図で書かれたものなのか、僕にはまったくわかりません。
38
38
 
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-