多个进程之间共享配置变量

时间:2019-01-01 18:19:09

标签: python dictionary parallel-processing multiprocessing multiple-processes

假设您有一个config.py,里面有

settings = read_yaml('settings.yaml')

所以config.settings是一本字典。

在一个脚本foo.py中,您拥有:

import config
config.settings['foo'] = str(time.time())
write_yaml('settings.yaml', config.settings)

,在另一个脚本bar.py中,您拥有

import config
while True:
    sleep(10)
    print config.settings['foo']

如何在任何时候运行bar.py之后如何将foo.py中的打印值更新为新值,而又不会明显地读取文件,而又将其视为{{1}中的while循环}必须尽快!

我目前在单独的bash线程上运行它们,即:

bar.py

但是如果可以的话,我可以在线程中运行bar吗?

1 个答案:

答案 0 :(得分:2)

我不知道您需要多快。但是肯定可以用importlib.reload重新加载config模块。因此config.pyfoo.py保持不变,而您的bar.py变为:

import importlib
import config

while True:
    print config.settings['foo']
    sleep(10)
    importlib.reload(config)

更新

以上示例适用于Python> = 3.4,对于早期版本的Python 3使用imp.reload,对于Python 2使用reload