質問編集履歴
4
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[Python]並列処理で
|
1
|
+
[Python]並列処理でプロセス数を増やすとエラーが発生する
|
test
CHANGED
File without changes
|
3
題名の更新
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[Python]
|
1
|
+
[Python]並列処理でBrokenProcessPoolエラーが発生する
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# 状況
|
2
2
|
|
3
|
-
自作のモジュール内で並列処理を実装したいと考えています。
|
3
|
+
自作のモジュール内で`coucurrent.futures.ProcessPoolExecutor`を用いて並列処理を実装したいと考えています。
|
4
4
|
|
5
5
|
下記のコードで`MAX_WORKERS = 16`として実行したところ、`BrokenProcessPool`が発生しました。
|
6
6
|
|
2
文法修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -108,6 +108,8 @@
|
|
108
108
|
|
109
109
|
仮想化: 有効
|
110
110
|
|
111
|
+
|
112
|
+
|
111
113
|
**OS**
|
112
114
|
|
113
115
|
Windows10
|
1
初心者マークを外した。不要な情報を削除した。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# 状況
|
2
2
|
|
3
|
-
自作のモジュール内で
|
3
|
+
自作のモジュール内で並列処理を実装したいと考えています。
|
4
4
|
|
5
|
-
下記のコードで
|
5
|
+
下記のコードで`MAX_WORKERS = 16`として実行したところ、`BrokenProcessPool`が発生しました。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
# 試したこと
|
40
40
|
|
41
|
-
自分で原因を探ったところ、OSがプロセスをkillしている可能性があるとのことで、`MAX_WORKERS = 8`とした場合には`BrokenProcessPool`は発生しませんでした。
|
41
|
+
自分で原因を探ったところ、OSがプロセスをkillしている可能性があるとのことで、プロセス数を減らせばエラーが発生しないと考え`MAX_WORKERS = 8`とした場合には`BrokenProcessPool`は発生しませんでした。
|
42
42
|
|
43
43
|
また、公式のドキュメントを読んだところ、ProcessPoolExecutorの項で「If max_workers is None or not given, it will default to the number of processors on the machine.」とあったため`MAX_WORKERS = None`としたところ、`BrokenProcessPool`が発生しました。
|
44
44
|
|
@@ -80,6 +80,10 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
+
また、「使用しているCPUは8コア16スレッドなので、`MAX_WORKERS`を増加させると`MAX_WORKERS = 16`まではタスクが高速になる可能性がある。」という認識は正しいでしょうか。
|
84
|
+
|
85
|
+
|
86
|
+
|
83
87
|
並列処理にはあまり詳しくないため、前提知識などが抜け落ちていた場合はご教示いただければ幸いです。
|
84
88
|
|
85
89
|
よろしくおねがいします。
|
@@ -104,14 +108,6 @@
|
|
104
108
|
|
105
109
|
仮想化: 有効
|
106
110
|
|
107
|
-
L1 キャッシュ: 512 KB
|
108
|
-
|
109
|
-
L2 キャッシュ: 2.0 MB
|
110
|
-
|
111
|
-
L3 キャッシュ: 16.0 MB
|
112
|
-
|
113
|
-
|
114
|
-
|
115
111
|
**OS**
|
116
112
|
|
117
113
|
Windows10
|