質問編集履歴

3

記載ミス

2021/06/08 09:00

投稿

aiai8976
aiai8976

スコア112

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

質問の解答

2021/06/08 09:00

投稿

aiai8976
aiai8976

スコア112

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

質問の解答

2021/06/08 04:34

投稿

aiai8976
aiai8976

スコア112

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