最近一个项目中想要使用pyqtSignal实时在窗口中append另外一个进程中接收到的信号,但是试了好几次,都无法接收到emit信号,并且用id(signal)发现所有signal实例都是同一个。这就很奇怪了。
搜索后发现,原来是因为pyqt的signal只能够在同一个进程的不同线程中进行传递,而跨进程就不行,需要用到进程间通信,如队列,才能解决。
参考:https://www.v2ex.com/t/346882
没办法,只能暂时放弃这个想法了,毕竟对进程间通信还是很陌生
2020-03-02更新
经过几天的摸索,已经能够使用mutiprocessing.Queue进行进程间消息队列
from PyQt5.QtCore import QThread, pyqtSignal
from module.ui import *
import multiprocessing
class readThread(QThread):
def __init__(self, q, sig):
super(readThread, self).__init__()
self.q = q
self.sig = sig
def run(self):
while True:
if not self.q.empty():
value = self

本文探讨了PyQtSignal在不同进程间通信的局限性,介绍了一种利用multiprocessing.Queue实现进程间消息传递的方法,通过具体代码示例展示了如何在多进程中实时更新GUI界面。
最低0.47元/天 解锁文章
1177





