关于PyQT5进程间使用pyqtSignal

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

最近一个项目中想要使用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
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值