我的主要问题:您是否可以将多个进程写入循环中的一个队列并使用该队列更新GUI?
我一直在查看关于队列和多个进程的帖子,我想知道是否有人知道使用它们的组合是否可能或有益。 我的思维过程是这样的:因为现在所有的处理器都是用~8个内核制作的,如果程序的任何部分计算成本都很高,我制作的大多数程序应该能够访问这个功能。我想有一个GUI,可以同时显示几个不同进程的进度。我希望每个进程尽可能多地使用处理器,但它们都必须同时写入GUI,因此从我读过的内容来看,似乎队列对此有用。
这是解决此问题的最佳方法,让多个进程通过管道与队列进行通信,并让队列更新GUI吗?
目前我正在使用pyQt信号和插槽,但我觉得这对现代来说是一个糟糕的解决方案,因为它只使用一个CPU核心。
答案 0 :(得分:1)
大多数GUI系统都是事件驱动的,并且期望所有事件处理都来自单个线程。对于Windows事件系统,Android事件,Swing以及可能的许多其他事件都是如此。在GUI的情况下,使所有事件管理功能线程安全的实际好处很小,而难度非常大。大多数大规模并发系统确实将基于事件和基于线程的方法结合到并发中,例如现代浏览器。在您的情况下,只需注册更新事件并将其通过工作进程/线程发布到事件调度线程就会简单得多。这样,您的GUI仍然可以响应其他窗口事件,因为它只是定期通知。