質問編集履歴
3
記載ミス
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,7 +28,9 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
multiprocessingを使っているのに、マルチスレッドのようにmainプロセスに遅延が発生する
|
31
|
+
multiprocessingを使っているのに、マルチスレッドのようにmainプロセスに遅延が発生する。
|
32
|
+
|
33
|
+
一般的なマルチプロセスだとサブプロセスの数にかかわらず、mainの一周の所要時間はほとんど変化がないはずです、、
|
32
34
|
|
33
35
|
|
34
36
|
|
2
質問の解答
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,11 +32,71 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
+
```
|
36
|
+
|
37
|
+
//サブプロセス1個の場合
|
38
|
+
|
39
|
+
1周の所要時間:0.7286965847015381
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
main process...
|
44
|
+
|
45
|
+
1周の所要時間:0.45372629165649414
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
main process...
|
50
|
+
|
51
|
+
1周の所要時間:0.5691251754760742
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
main process...
|
56
|
+
|
57
|
+
sub process...
|
58
|
+
|
59
|
+
1周の所要時間:0.5207698345184326
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
//サブプロセス3個の場合
|
68
|
+
|
69
|
+
1周の所要時間:1.465956449508667
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
main process...
|
74
|
+
|
75
|
+
1周の所要時間:1.0600461959838867
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
main process...
|
80
|
+
|
81
|
+
1周の所要時間:1.0374970436096191
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
main process...
|
86
|
+
|
87
|
+
sub process...
|
88
|
+
|
89
|
+
1周の所要時間:1.293185949325561
|
90
|
+
|
91
|
+
```
|
92
|
+
|
93
|
+
|
94
|
+
|
35
95
|
### 該当のソースコード
|
36
96
|
|
37
97
|
|
38
98
|
|
39
|
-
```
|
99
|
+
```python
|
40
100
|
|
41
101
|
import os
|
42
102
|
|
@@ -74,7 +134,7 @@
|
|
74
134
|
|
75
135
|
else:
|
76
136
|
|
77
|
-
hoge.hoge(queue_data)
|
137
|
+
hoge.hoge(queue_data) # キューに入れたデータをcsvに変換して保存します
|
78
138
|
|
79
139
|
print('sub processを終了します.')
|
80
140
|
|
@@ -94,7 +154,7 @@
|
|
94
154
|
|
95
155
|
start = time.time()
|
96
156
|
|
97
|
-
fuga = fuga.fuga()
|
157
|
+
fuga = fuga.fuga() #センサから値を取ってきます
|
98
158
|
|
99
159
|
|
100
160
|
|
@@ -157,3 +217,11 @@
|
|
157
217
|
p_subsubsub.join()
|
158
218
|
|
159
219
|
```
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
##環境
|
224
|
+
|
225
|
+
OS: Raspberrypi OS
|
226
|
+
|
227
|
+
デバイス: ラズパイ4
|
1
質問の解答
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,18 @@
|
|
5
5
|
pythonのmultiprocessingを使って並列処理をしたいのですが、
|
6
6
|
|
7
7
|
下のようなコードだと、マルチスレッドのようにmainプロセスに遅延が発生してしまいます。
|
8
|
+
|
9
|
+
具体的には、
|
10
|
+
|
11
|
+
mainで
|
12
|
+
|
13
|
+
```ここに言語を入力
|
14
|
+
|
15
|
+
print(f'1周の所要時間:{elapsed_time}\n')
|
16
|
+
|
17
|
+
```
|
18
|
+
|
19
|
+
を実行しているのですが、サブプロセスが1この時とサブプロセスが2こ3この時で平均的な所要時間が多くなってしまいます。
|
8
20
|
|
9
21
|
使えるCPUの範囲でサブプロセスをある程度増やしても完全な並列処理ができるようにするにはどのようにすればいいのでしょうか。
|
10
22
|
|