[英]Python tkinter - GUI is 'lagging' even with Multithreading
我正在编写一个 tkinter 项目,其中我有一个与仪器的串行连接。 一旦建立连接(通过单击 GUI 上的按钮完成),我将运行一个循环,在其中我向仪器询问各种问题并将答案写入日志 (.txt)。
我以下列方式调用循环:
def Polling():
global after_polling
Loop()
after_polling = app.after(10, func = Polling)
在循环期间,我需要等待 X 毫秒,所以我执行以下操作:
t = threading.Thread(target=sleepms(val))
t.start()
t.join()
我需要等到 X 时间过去,因此t.join()
sleepms
function 是:
def sleepms(time_ms):
time_s=time_ms/1000
time.sleep(time_s)
所以我不确定为什么 GUI 变得非常无响应(或者需要很长时间才能响应)。
任何人都知道我做错了什么,我该如何解决这个问题? 谢谢。
使用线程不像你做的那样:
t = threading.Thread(target=sleepms(val))
t.start()
t.join()
那是因为您已经生成了一个线程,但同时主程序被阻塞等待t.join
:该程序仍然以顺序方式工作,而不是并行工作。
你通常用线程做的事情是这样的:
t = threading.Thread(target=sleepms(val))
t.start()
# do something here
t.join()
在您的情况下,一种选择是不加入胎面,使其保持活力并将信息传递给它以完成工作。 https://www.geeksforgeeks.org/how-to-use-thread-in-tkinter-python/的简单示例
做这样的事情:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.