回答編集履歴

2

スレッド版ソースを追加

2018/11/01 23:36

投稿

frodo821
frodo821

スコア322

test CHANGED
@@ -37,3 +37,41 @@
37
37
  もっと単純にするなら、スレッドを使ってやる方法もありますよ。スレッドのほうがサブプロセスよりは軽量なのでおすすめですね。
38
38
 
39
39
  サブプロセスは膨大な計算を並列化するときなど、PythonのGILが邪魔なとき、Python以外のプロセスを動かしたいときの手段です。
40
+
41
+
42
+
43
+ ```python
44
+
45
+ import tkinter
46
+
47
+ from threading import Thread
48
+
49
+
50
+
51
+ def submain():
52
+
53
+ """本来のメインプロセス動作"""
54
+
55
+
56
+
57
+ root = tkinter.Tk()
58
+
59
+ label = tkinter.Label(root, text='press button')
60
+
61
+ label.pack()
62
+
63
+ button1 = tkinter.Button(root, text='Exit', command=root.destroy)
64
+
65
+
66
+
67
+ th = Thread(target=submain)
68
+
69
+ th.start()
70
+
71
+
72
+
73
+ button1.pack()
74
+
75
+ root.mainloop()
76
+
77
+ ```

1

スレッドについて追記

2018/11/01 23:36

投稿

frodo821
frodo821

スコア322

test CHANGED
@@ -33,3 +33,7 @@
33
33
  このように、os.kill()をlambda式のなかで実行するようにしましょう。
34
34
 
35
35
  オリジナルのコードではos.killがボタンを作成する段階で評価されてしまいます。
36
+
37
+ もっと単純にするなら、スレッドを使ってやる方法もありますよ。スレッドのほうがサブプロセスよりは軽量なのでおすすめですね。
38
+
39
+ サブプロセスは膨大な計算を並列化するときなど、PythonのGILが邪魔なとき、Python以外のプロセスを動かしたいときの手段です。