【问题标题】:Communicating between Processes: Python Multiprocessing进程间通信:Python 多处理
【发布时间】:2016-01-18 17:37:58
【问题描述】:

我正在使用 PyQt 为我的应用程序创建 gui,但在使用线程进行单独进程时遇到了一些麻烦,因此开始使用 multiprocessing.Process 类。之前,我使用信号和插槽在工作进程和 gui 之间进行通信,但是 SignalInstance 类不能被腌制,据我所知不能与 Process 一起使用,所以我不得不找到另一种方式来发送进度来自工作进程的报告(完成百分比等)以更新 gui 中的进度条。这样做的最佳方法是什么?

【问题讨论】:

  • 您有什么问题不得不从多线程方法切换到多进程方法?
  • 工作线程中运行的进程正在锁定 gui。我在stackoverflow.com/questions/33147725/… 发布了一个问题
  • 尝试将postEvent 与自定义事件类一起使用。然后,您可以使用事件过滤器来监视您的事件,并从那里更新您的进度条。

标签: python pyqt multiprocessing signals-slots


【解决方案1】:

请参阅this 的回答,您可以使用多处理库在进程之间共享内存。文档here(参见 16.6.1.4. 进程间共享状态)。

【讨论】:

  • 看来我需要将一个值传递给子进程,该子进程将在它工作时对其进行更新,并且我需要不断地从我的 gui 类中检查这个值并根据更新进度条到不断变化的价值...这是否仍会锁定我的 gui?
  • 我创建了一个在自己的线程中运行的“观察者”类。这将监视 Value 对象并更新似乎对我有用的 gui
  • 这是一个很好的问题,我通常指的是在进程之间共享内存。我很确定有一种管理与 GUI 通信的好方法,但我不知道它是什么,欢迎您不接受我的答案(如果可能的话)或发布新答案以获得更具体的答案。
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多