回答編集履歴
3
追記2 ライブラリ側でのタイムアウト対応について
test
CHANGED
@@ -146,6 +146,30 @@
|
|
146
146
|
|
147
147
|
|
148
148
|
|
149
|
+
|
150
|
+
|
151
|
+
追記2:
|
152
|
+
|
153
|
+
質問のコードには書かれてませんが、
|
154
|
+
|
155
|
+
スクレイプという事なので、requests 等のライブラリをお使いでしょうか?
|
156
|
+
|
157
|
+
もし、ライブラリ側で対応しているなら、そちらの timeout オプションの利用が適してます。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
thread.join(timeout=3) は、スケジュールのループを3秒間ブロックするので、
|
162
|
+
|
163
|
+
秒単位のスケジュールがある場合、3秒遅延になります。
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
ライブラリ側でのタイムアウトであれば、(質問のコードの構成の場合)別スレッドなので、
|
168
|
+
|
169
|
+
メインスレッドのスケジュールのループに影響ありません。
|
170
|
+
|
171
|
+
|
172
|
+
|
149
173
|
----
|
150
174
|
|
151
175
|
concurrency モジュールに言及しておくと、
|
2
デーモン化したスレッドについて補足
test
CHANGED
@@ -165,3 +165,27 @@
|
|
165
165
|
実行中の処理の中断という用途には近いかもしれません。
|
166
166
|
|
167
167
|
asyncio対応ライブラリであれば、I/O処理待ちのタイミングでの中断が可能です。
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
----
|
172
|
+
|
173
|
+
追記
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
> scheduleを使用するとデーモン化しても裏でまだスレッドが普通に生きてます。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
ここも恐らく誤解だと思います、
|
182
|
+
|
183
|
+
どのようにスレッドの生存を確認したのでしょうか。
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
schedule の利用の有無に関わらず、デーモンスレッドが破棄されるのは、
|
188
|
+
|
189
|
+
「デーモンでない生存中のスレッドが全てなくなる」タイミングなので、
|
190
|
+
|
191
|
+
メインスレッドが終了した後です。
|
1
文章の修正
test
CHANGED
@@ -114,11 +114,15 @@
|
|
114
114
|
|
115
115
|
|
116
116
|
|
117
|
-
回答としては、まずはスレッド
|
117
|
+
回答としては、まずはスレッドで行う処理中に、
|
118
118
|
|
119
119
|
解放が必要なリソースがあるかどうか確認したうえで、
|
120
120
|
|
121
|
+
|
122
|
+
|
123
|
+
スレッド内で行う処理は、後処理が確実に実行されるように、
|
124
|
+
|
121
|
-
|
125
|
+
安全に中断可能な設計にする必要があります。
|
122
126
|
|
123
127
|
|
124
128
|
|