【问题标题】:Multi-Threading in PyQt 5PyQt5 中的多线程
【发布时间】:2017-07-20 09:49:47
【问题描述】:

我一直在学习多线程,特别是在 PyQt 5 应用程序的上下文中。

最初我使用“线程”实现了一个版本,但后来得知我应该使用“QThread”来允许使用信号/插槽,例如:

workerThread = QThread()
workerObject = Worker(cmdlist)
workerObject.moveToThread(workerThread)
workerThread.started.connect(workerObject.run)
workerObject.finished.connect(workerThread.quit)

但是,是否有可能设计一个系统:

  • 每个类都与运行时创建的线程相关联。
  • 然后程序的“主要”组件可以调用这些函数中的函数 类,它们在给定的单独线程中执行 类。

行为示例如下:

thread = threading.Thread(target=self.run, args=())

但是我将如何使用 QThread 实现类似的行为?
还是我对 Python 中线程的理解不正确?

【问题讨论】:

  • 我相信我的答案中的链接详细解释了如何将提升功能推广到线程。但是,为每个类关联线程并不是一个好主意。那是糟糕的设计。仅将长时间运行的任务放在线程中。线程越明确越好。

标签: python-3.x pyqt pyqt5 python-multithreading


【解决方案1】:

Martin Fitzpatrick 有一个关于如何使用 QThreadPools 执行此操作的精彩指南。我想这就是你要找的。​​p>

Multithreading PyQt applications with QThreadPool

【讨论】:

  • learnpyqt.com 似乎不再存在,Martin 的所有帖子似乎都链接回了该网站。
  • @MarkCarpenterJr 更新了链接!
  • 谢谢!由于某种原因,我所在地区的 ISP 阻止了 martin 用作主机的服务器。太奇怪了,即使在使用 Google 或 Cloudflare DNS 时也是如此。不用担心,尽管我有代理来解决这些情况。
  • 那个指南很棒!
猜你喜欢
  • 2017-12-08
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多