PyQt 进程间共享数据的最快方式

问题描述 投票:0回答:0

我用 Python 和 PyQt 框架编写了一个桌面应用程序。 在这个软件中,我从LAN口读取数据,对数据进行处理,并显示在软件的主窗口中。我在一个单独的线程中从 LAN 端口读取。 而且为了从LAN口读取数据的过程不被打断,数据不丢失,我使用了multiprocessing。 我的问题是在进程之间共享数据。我目前正在使用“put”和“get”。但这似乎会减慢软件的速度。 我的另一个问题是我需要在 Lan 类的“解码”方法中保留一个变量并在下一次调用中使用它。请指导我如何做到这一点。 库.py:

from lan import Lan
self_C1=None
class GData:
    def ....
        #some code  
    def GetData(self,x1, ..):
        ......
        lan=Lan()
        y1,y2 ..= lan.decod(array1, ...)
        q.put(y1)
        ......
        ......      
def M1(z1,...):
    global self_C1,....
    ......
    Gd=GData()
    tGetData = Process(target=Gd.GetData, args=(a1,a2,...,q,))
    tGetData.start()
    value=q.get()  
    self_C1.ShowNow(value,...)
    .......     
class C1(QtCore.QObject):
    def M2(self, ...):
    
        tM1 = Thread(target=M1, args=(b1,...))
        tM1.start()     
    ....
    def M3(self,...):
        global self_C1,....
        self_C1=self
    .....   
    def Show(self,value,...):
    # send value eith Signal (self.x.emit()) for QMainWindow
python multithreading pyqt multiprocessing shared-memory
© www.soinside.com 2019 - 2024. All rights reserved.