回答編集履歴

3

誤字修正

2020/07/04 21:24

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -1,6 +1,6 @@
1
1
  どのような処理の関数を停止したいのかは解りませんが、
2
2
 
3
- スレッド自体は一旦止めるという操作を出来ないので、
3
+ スレッド自体は一旦止めるという操作を出来ないので、
4
4
 
5
5
  自身で関数をそのように実装する必要があります。
6
6
 

2

エラー原因について

2020/07/04 21:24

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -15,3 +15,21 @@
15
15
  サンプルコード: [Teratail 261628](https://teratail.com/questions/261628) スレッドで停止・再開する場合のサンプル
16
16
 
17
17
  [Demo](https://repl.it/@MiKLTea/TkThreadResumeDemo)
18
+
19
+
20
+
21
+ ----
22
+
23
+ 追記: エラーの原因
24
+
25
+
26
+
27
+ 「RuntimeError: threads can only be started once」
28
+
29
+ と書かれているように、スレッドの誤用です。
30
+
31
+
32
+
33
+ [スレッドベースの並列処理](https://docs.python.org/ja/3/library/threading.html)
34
+
35
+ > start() このメソッドは、スレッドオブジェクトあたり一度しか呼び出してはなりません。

1

「一旦止める」→処理を再開をしたい場合は、future.cancel()は適切でなかったので削除

2020/07/04 21:23

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -5,8 +5,6 @@
5
5
  自身で関数をそのように実装する必要があります。
6
6
 
7
7
 
8
-
9
- - concurrentモジュールであれば、Futureオブジェクトのcancel()
10
8
 
11
9
  - 通常のスレッド内の「ループ処理」であれば、threading.Event が使えます
12
10