python - 如何从另一个线程更新 GUI?使用Python

标签 python multithreading user-interface

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

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

有关线程处理的任何建议阅读内容。 ?

最佳答案

当然,您可以使用线程同时运行多个进程。

你必须创建一个像这样的类:

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 时间。

希望对你有帮助。

关于python - 如何从另一个线程更新 GUI?使用Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52073973/

相关文章:

ios - GPUImage 直方图和丢帧

java - 子线程阻塞java中的父线程

user-interface - 我如何知道在使用 GUI 时 Matlab 是否繁忙?

python - 如何在python中更改环境变量?

python - 如何使用 PyMongo 将索引从一个集合复制到另一个集合?

python - 为包含 _dopostback 方法的多个页面抓取网站,并且页面的 URL 不会更改

python - 实现数值求解微分方程的初始条件

c - 多线程数独求解器

java - 如何在android中创建发光背景?

java - 是否有与 JFrame.pack() 等效的方法,仅在子组件小于其数据模型时才调整子组件的大小?