weixin_40005331 2019-10-09 02:37 采纳率: 0%
浏览 303

为什么全局变量在进程中赋值后,线程中接收不到。

我定义了一个global全局变量,在一个进程中对这个变量赋值,然后想在一个线程中使用这个变量,但是发现线程中并没有收到应该被赋值的全局变量,不知道是什么原因,以下是我的部分代码

 global a
 a = {}
 class Control_system(QMainWindow, Ui_Control_system):
     socketQueue = multiprocessing.Queue()
     def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.p1 = multiprocessing.Process(target=Control_system.connect, args=(self.socketQueue,))
        self.p1.start()
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.client)
        self.timer.start(1000)

    @staticmethod
    def connect(queue):
        ip_port = ("192.168.1.251", 8880)
        s = socketserver.ThreadingTCPServer(ip_port, MyServer)
        s.serve_forever()

    def client(self):
        print(a)
#   这里的a还是空字典

class MyServer(socketserver.BaseRequestHandler):

    def handle(self):
        print("conn is :", self.request)  # conn
        print("addr is :", self.client_address)  # addr

        a[self.client_address] = self.request
        print("a:",a)
#   这里的a是有值的


if __name__ == '__main__':

    if not QApplication.instance():
        app = QApplication(sys.argv)
    else:
        app = QApplication.instance() 

    w = Control_system()
    w.show()
    sys.exit(app.exec())
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 C#调用python代码(python带有库)
    • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
    • ¥15 活动选择题。最多可以参加几个项目?
    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
    • ¥15 vs2019中数据导出问题
    • ¥20 云服务Linux系统TCP-MSS值修改?
    • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
    • ¥20 怎么在stm32门禁成品上增加查询记录功能
    • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
    • ¥50 NT4.0系统 STOP:0X0000007B