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

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

我定义了一个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 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机