回答編集履歴
3
誤字修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
どのような処理の関数を停止したいのかは解りませんが、
|
2
|
-
スレッド自体は一旦止めるという
|
2
|
+
スレッド自体は一旦止めるという操作を出来ないので、
|
3
3
|
自身で関数をそのように実装する必要があります。
|
4
4
|
|
5
5
|
- 通常のスレッド内の「ループ処理」であれば、threading.Event が使えます
|
2
エラー原因について
answer
CHANGED
@@ -6,4 +6,13 @@
|
|
6
6
|
y_waiwai さんの仰られてるフラグの仕組みに該当する部分です。
|
7
7
|
|
8
8
|
サンプルコード: [Teratail 261628](https://teratail.com/questions/261628) スレッドで停止・再開する場合のサンプル
|
9
|
-
[Demo](https://repl.it/@MiKLTea/TkThreadResumeDemo)
|
9
|
+
[Demo](https://repl.it/@MiKLTea/TkThreadResumeDemo)
|
10
|
+
|
11
|
+
----
|
12
|
+
追記: エラーの原因
|
13
|
+
|
14
|
+
「RuntimeError: threads can only be started once」
|
15
|
+
と書かれているように、スレッドの誤用です。
|
16
|
+
|
17
|
+
[スレッドベースの並列処理](https://docs.python.org/ja/3/library/threading.html)
|
18
|
+
> start() このメソッドは、スレッドオブジェクトあたり一度しか呼び出してはなりません。
|
1
「一旦止める」→処理を再開をしたい場合は、future.cancel()は適切でなかったので削除
answer
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
スレッド自体は一旦止めるという名操作を出来ないので、
|
3
3
|
自身で関数をそのように実装する必要があります。
|
4
4
|
|
5
|
-
- concurrentモジュールであれば、Futureオブジェクトのcancel()
|
6
5
|
- 通常のスレッド内の「ループ処理」であれば、threading.Event が使えます
|
7
6
|
y_waiwai さんの仰られてるフラグの仕組みに該当する部分です。
|
8
7
|
|