为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2021-06-04 12:36:03
从python中的另一个线程更新gui的最佳方法是什么。我有主函数 (GUI) thread1,从这里我指的是另一个线程 ( thread2),是否可以在Thread2不取消工作的同时更新 GUI thread2,如果是,我该怎么做?关于线程处理的任何建议阅读。?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

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


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


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


我希望它会帮助你。


查看完整回答
反对 回复 2021-06-06
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信