繁体   English   中英

全局变量通过多线程 python

[英]Global variables through multithreading python

我有一个正在监视的文件,因为我需要其中的两个字段,问题是我遇到了使用多线程库我无法共享全局变量的问题,也就是说,我在主文件和主文件中修改它们过程他们没有出来那些修改,我一直在调查,我找不到解决方案。 您正在运行的子进程必须实时看到在主进程中所做的修改

WH = ''
delay = 0.0


def comprobar():
    print(WH)
    print(delay)


if __name__ == "__main__":

    while True: 

        with open("configUsers.json") as archivo:
            data = json.load(archivo)
            WH = data['WH']
            delay = data['delay']
            thread = multiprocessing.Process(name="hilo1", target=comprobar, args=())
            thread.start()
            time.sleep(0.5)

你在什么操作系统上运行? MacOS/Windows 或 Linux。 我猜是前者。

Python 有两种不同的启动子进程的方式。

在一种情况下(“分叉”),它会精确复制世界,然后调用 function。 分叉是 Linux 上的默认设置。 在这个世界上,您会看到 WH 和延迟更新值。

在另一种情况下(“生成”),它会启动一个新的 Python 图像并重新加载文件,但if __name__ == "__main__"则不执行其中的代码。 这是 Windows 和 MacO 上的默认设置。 在这种情况下,您的代码仍会将值视为""0.0

在您的情况下,您应该将WHdelay作为 arguments 传递给comprobar() 我希望您实际上是在尝试做一些更复杂的事情,但是从这个有限的示例中很难看出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM