回答編集履歴
1
説明追加
test
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
+
真剣に並列処理を勉強したいのであれば、teamiklが書かれているような勉強をしてください。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
手早く実現したいのであれば、プロセスとシグナルで実行する方法よりも、スレッドを使えば、メモリを共有しているのでフラグを決めておいて親スレッドがフラグに書き込み、子スレッドがときどきフラグをチェックして終了するというのが最も簡単です。子スレッド側はフラグに書き込まないので排他制御も必要ありません。
|
6
|
+
|
7
|
+
|
8
|
+
|
1
|
-
処理が単純なループならば、以下のよう
|
9
|
+
処理が単純なループならば、以下のようにして実現することが出来ます。
|
2
10
|
|
3
11
|
|
4
12
|
|
@@ -78,6 +86,18 @@
|
|
78
86
|
|
79
87
|
```
|
80
88
|
|
89
|
+
これを実行すると、thread1はターミナルに対して1秒ごとにHelloを表示し続けます。
|
90
|
+
|
91
|
+
親スレッドはtkinterを使ってボタンを表示します。tkinterのボタンを押すと、関数stopが呼び出されてフラグであるLIVEをFalseに変更します。
|
92
|
+
|
93
|
+
すると、次のタイミングでLIVEをチェックした子スレッドはtryに向けて大域脱出して終了します。
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
実際の動きは実行してみればわかるはずです。
|
98
|
+
|
99
|
+
|
100
|
+
|
81
101
|
単純なループでなければ、問題が起きそうな場所に
|
82
102
|
|
83
103
|
|
@@ -90,4 +110,4 @@
|
|
90
110
|
|
91
111
|
```
|
92
112
|
|
93
|
-
を入れておけば、そ
|
113
|
+
を入れておけば、そこに来た時点で止まります。(関数化しておいて呼び出した方がわかりやすいでしょう)
|