GUI の応答性を維持するために、wxPython アプリケーションにバックグラウンド スレッドがあります。バックグラウンド スレッドの "run" メソッドに while(true) ループがありますが、GUI スレッドから呼び出すことがある他のメソッドもあります。バックグラウンド スレッドの別のメソッドを実行している間に実行メソッドを停止する方法はありますか?
質問する
245 次
2 に答える
1
次のようなコードがあるとしましょう。
import threading
import time
class MyWorkerThread(threading.Thread):
def run():
while True:
# Do some important stuff here
foo()
time.sleep(0.5)
def foo():
# Do something important here too
pass
class SomeRandomButton:
def __init__(worker_thread):
self.worker_thread = worker_thread
# Function called when button is clicked
def on_button_clicked():
self.worker_thread.foo();
my_worker_thread = MyWorkerThread()
my_button = SomeRandomButton(my_worker_thread)
# Start thread
my_worker_thread.run()
# Initialize the GUI system (creating controls etc.)
# Start GUI system
GUISystem.run()
上記のコードは実際には何もせず、実行さえしませんが、これを使用して、スレッド オブジェクト ( ) 内の関数をそのMyWorkerThread.foo
特定のスレッドから呼び出す必要はなく、任意のスレッドから呼び出すことができることを示します。 .
マルチスレッドについて、また複数のスレッドが同時にアクセスすることからデータを保護するためのセマフォについてもっと読みたいと思うかもしれません。
于 2012-07-24T12:57:05.897 に答える
0
好きにする
while(alive):
while(not stopped):
"""
thread body
"""
そして、スレッドを一時停止できる他の場所
stopped=True
そして使うより
stopped = True
alive = False
スレッドを終了するには
于 2012-07-24T12:40:07.430 に答える