我已经为我们工厂的控制系统写了一个监控程序。它基本上是一个GUI,它让操作员看到闭环系统的锁的当前状态,并在锁/环断的情况下知道操作员。
现在,操作在很大程度上依赖于GUI的响应。我的前辈们告诉我,他们更喜欢控制台打印,而不是使用基于TKinter的图形用户界面,因为TKinter在实时工作时会出现延迟。
有没有人能对这方面发表评论?可以检查和纠正此延迟吗?
提前谢谢。
发布于 2015-03-22 13:54:53
我要说的是,如果你的程序只是访问数据,而不是与数据交互,那么GUI似乎有点过分了。正如您所知道的,GUI是指导式用户界面,用于指导用户通过界面。如果界面只是一个状态,正如您所指出的,那么我认为控制台程序没有任何问题。
但是,如果您的程序还以一种在没有GUI的情况下很难与数据交互的方式与数据交互,那么GUI可能是正确的选择。
您有没有考虑过用另一种编程语言编写GUI?众所周知,即使在控制台中,Python也有点慢。根据我的经验,就查看数据而言,C++更快。祝你好运!
发布于 2020-04-11 04:30:21
Python / tkinter一般
在tkinter程序中,您的代码属于以下四种类别之一;
在
mainloop.mainloop。在不同进程中运行的在第一种情况下,代码花费的时间只会影响启动时间,对于长时间运行的程序来说,这可能并不是那么重要。
关于第二种情况,编写良好的回调应该不会花那么长时间来运行。在几十毫秒的数量级,也许高达100毫秒。如果它们花费更长的时间,它们将使GUI无响应。因此,除非您注意到GUI运行缓慢(没有线程;见下文),否则这应该不是问题。
这里的一个陷阱是after回调,即将被调度为在特定时间之后运行的函数。如果您太频繁地启动它们,这也会耗费GUI的时间。
另一个可能的问题可能是对包含大量项目的Canvas的操作。
据我所知,从Python3.x开始,tkinter是线程安全的。但是,在Python的参考实现中,一次只能有一个线程执行Python字节码。所以在第二个线程中进行繁重的计算会减慢GUI的运行速度。
如果你的图形用户界面使用multiprocessing在另一个进程中运行计算,这应该不会对你的图形用户界面的速度有太大影响,除非你在与另一个进程通信时做错了事情。
您的监控程序
什么速度太慢取决于具体情况。一般来说,Python不被认为是一种适合硬real-time程序的语言。要实现硬实时,还需要一个合适的操作系统。
那么问题就变成了您的系统规范中可接受的延迟是什么?在不知道不可能准确回答你的问题的情况下。
您的GUI似乎只是显示了一些系统状态。如果您不经常读取/检查数据,这应该不会造成太多的负载。正如在上面的回调段落中所描述的,通过过于频繁地运行回调,可能会使GUI的CPU周期变得匮乏。根据您所写的内容,我猜想GUI的任务只是通知人类操作员。这让我相信这项任务并不是非常关键的时间;一个需要毫秒干预时间的系统不应该依赖于人工操作员。
因此,根据您的信息,我想说一个写得很好的GUI可能不会太慢。
https://stackoverflow.com/questions/29190427
复制相似问题