我的 wxPython 应用程序中有一个后台线程来保持 GUI 响应。在我的后台线程的“运行”方法中有一个 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 回答