回答編集履歴

1

デモコードの解説を追記

2021/07/19 06:18

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -38,8 +38,36 @@
38
38
 
39
39
  参考: [公式のデモコード](https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Multithreaded_Long_Tasks.py)
40
40
 
41
- - Thread を使い、時間のかかる処理は別スレッドで行う。
41
+ - (Do Long Task ボタンを押した時) Thread を使い、時間のかかる処理は別スレッドで行う。
42
+
43
+  long_operation_thread 関数を別スレッドで実行。
44
+
45
+ - 別スレッド内では時間のかかる処理、待機処理を行っても、
46
+
47
+  GUIのイベントループを阻害しないため、問題有りません。
42
48
 
43
49
  - 別スレッドでGUIを直接変更はスレッドセーフな操作ではないので、
44
50
 
45
51
   GUIへの反映はイベントループ側で行う。→ write_event_value で独自のイベントを通知。
52
+
53
+
54
+
55
+ 質問のケースに適応すると、
56
+
57
+ 1) tweepy での処理を別スレッドで行う。
58
+
59
+ (long_operation_thread関数に当たる部分、関数名は何でも良い)
60
+
61
+
62
+
63
+ 2) tweepy での検索結果は、別スレッド側で直接 Multiline へは反映させない。
64
+
65
+ (マルチスレッドで安全な操作ではない為、稀に問題がおきる可能性がある。)
66
+
67
+ write_event_value を使い、イベントとしてメインスレッドのイベントループに送ります、
68
+
69
+
70
+
71
+ 3) 別スレッドから write_event_value で送られたイベントを受けて、
72
+
73
+ メッセージを Multiline へ反映させる。