0

我的主要问题是:您能否让多个进程循环写入一个队列并使用该队列更新 GUI?

我一直在查看有关队列和多个进程的帖子,我想知道是否有人知道使用它们的组合是否可能或有益。我的想法是这样的:因为现在所有的处理器都是用大约 8 个内核制造的,如果程序的任何部分在计算上是昂贵的,我制作的大多数程序都应该能够访问这种能力。我想要一个同时显示几个不同进程的进度的 GUI。我希望这些进程中的每一个都尽可能多地使用处理器,但是它们都必须同时写入 GUI,所以从我读到的内容来看,似乎队列可以解决这个问题。

解决这个问题的最佳方法是让多个进程通过管道与队列通信,并让队列更新 GUI?

目前我正在使用 pyQt 信号和插槽,但我觉得这对于现代来说是一个糟糕的解决方案,因为它只使用一个 CPU 内核。

4

1 回答 1

1

大多数 GUI 系统都是事件驱动的,并且期望所有事件处理都来自单个线程。Windows 事件系统、Android 事件、Swing 以及可能的许多其他事件系统都是如此。在 GUI 的情况下,使所有事件管理功能线程安全的实际好处很小,而难度却很大。大多数大规模并发系统确实结合了基于事件和基于线程的并发方法,例如现代浏览器。在您的情况下,只需注册一个更新事件并由您的工作进程/线程将其发布到事件调度线程就简单多了。这样,您的 GUI 将保持对其他窗口事件的响应,因为它只会定期收到通知。

于 2013-03-22T17:03:24.113 回答