猿问

如何从另一个线程更新 GUI?使用蟒蛇

从python中的另一个线程更新gui的最佳方法是什么。

我有主函数 (GUI) thread1,从这里我指的是另一个线程 ( thread2),是否可以在Thread2不取消工作的同时更新 GUI thread2,如果是,我该怎么做?

关于线程处理的任何建议阅读。?


慕侠2389804
浏览 121回答 1
1回答

慕尼黑8549860

当然,您可以使用线程来同时运行多个进程。你必须创建一个这样的类:from threading import Threadclass Work(Thread):&nbsp; &nbsp; def __init__(self):&nbsp; &nbsp; &nbsp; &nbsp; Thread.__init__(self)&nbsp; &nbsp; &nbsp; &nbsp; self.lock = threading.Lock()&nbsp; &nbsp; def run(self): # This function launch the thread&nbsp; &nbsp; &nbsp; &nbsp; (your code)如果你想同时运行多个线程:def foo():&nbsp; &nbsp; i = 0&nbsp; &nbsp; list = []&nbsp; &nbsp; while i < 10:&nbsp; &nbsp; &nbsp; &nbsp; list.append(Work())&nbsp; &nbsp; &nbsp; &nbsp; list[i].start() # Start call run() method of the class above.&nbsp; &nbsp; &nbsp; &nbsp; i += 1如果您想在多个线程中使用相同的变量,请小心。您必须锁定此变量,以便它们不会同时全部到达此变量。像这样 :lock = threading.Lock()lock.acquire()try:&nbsp; &nbsp; yourVariable += 1 # When you call lock.acquire() without arguments, block all variables until the lock is unlocked (lock.release()).finally:&nbsp; &nbsp; lock.release()在主线程中,您可以调用队列上的 join() 以等待所有待处理的任务完成。这种方法的好处是您不会创建和销毁线程,这很昂贵。工作线程将持续运行,但在队列中没有任务时将处于休眠状态,使用零 CPU 时间。我希望它会帮助你。
随时随地看视频慕课网APP

相关分类

Python
我要回答