从python中的另一个线程更新gui的最佳方法是什么。
我在thread1
中具有主要功能(GUI),因此我要引用另一个线程(thread2
),是否可以在Thread2
中工作时更新GUI而无需取消工作如果是thread2
,我该怎么做?
任何有关线程处理的建议阅读。 ?
答案 0 :(得分:0)
当然,您可以使用Threading来同时运行多个进程。
您必须创建一个像这样的类:
from threading import Thread
class Work(Thread):
def __init__(self):
Thread.__init__(self)
self.lock = threading.Lock()
def run(self): # This function launch the thread
(your code)
如果您想同时运行多个线程:
def foo():
i = 0
list = []
while i < 10:
list.append(Work())
list[i].start() # Start call run() method of the class above.
i += 1
如果要在多个线程中使用同一变量,请小心。您必须锁定此变量,以使它们不会同时全部到达此变量。像这样:
lock = threading.Lock()
lock.acquire()
try:
yourVariable += 1 # When you call lock.acquire() without arguments, block all variables until the lock is unlocked (lock.release()).
finally:
lock.release()
在主线程中,您可以在队列上调用join()以等待所有未完成的任务完成。
此方法的好处是您无需创建和销毁线程,这很昂贵。工作线程将连续运行,但是当队列中没有任何任务时,将使用零CPU时间进入睡眠状态。
希望它能对您有所帮助。