首页 > 解决方案 > 无论线程如何,tkinter 都会冻结

问题描述

我在 tkinter 顶层有一个按钮,它触发了一个在 4 核上利用多处理的功能。每当按下按钮时,顶层窗口都会冻结,我尝试在函数上应用线程,但它仍然冻结。

示例代码:

def single_func(....):
# something intensive

def some_func(....):
    for i in something:
        p = Process(target = single_func, args = (....))
        p.start()
        p.join()

def run_prog():
    cancel.config(state = tk.DISABLED)
    thr = threading.Thread(target = some_func, args = (......))
    thr.start()
    thr.join()

run = tk.Button(self.frame, text = "Yes", command = run_prog)
run.grid()

对此有何建议?我怀疑我需要定义 tkinter gui,并且必须明确声明该函数位于不同的线程上,但我什至不确定。

标签: pythonmultithreadingtkintermultiprocessing

解决方案


推荐阅读