如何在Python模块中共享可变变量?

时间:2016-10-13 08:26:03

标签: python python-multithreading

我需要在多个模块之间共享变量。在程序运行时,这些变量将由线程异步更改。

我需要能够同时通过多个模块访问变量的最新状态。

多个模块也将写入同一个变量。

基本上我需要的是共享内存空间,比如模块中的Global var,但是可以访问&所有其他模块可以异步更改。

我熟悉在模块中锁定全局变量。我不知道在多个模块中从哪里开始这样做。

怎么做?

1 个答案:

答案 0 :(得分:1)

将所有全局变量放在一个模块中,例如config.py并将其导入整个模块:

config.py:

a=None
varlock=None

main.py:

import config
import threading

config.a = 42
config.varlock = threading.RLock()
...

然后,您可以使用在main中实例化一次的全局锁实例来保护您的变量。每次在任何线程中修改其中一个时,请按

进行操作
with config.varlock:
    config.a = config.a + 42

你应该没事。

哈努哈利