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

问题描述 投票:1回答:1

假设你有里面的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中的打印值与新值保持一致,而没有明显读取文件,因为bar.py中的while循环需要尽可能快!

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

$ python bar.py
$ python foo.py

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

python dictionary parallel-processing multiprocessing multiple-processes
1个回答
2
投票

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

import importlib
import config

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

更新

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

© www.soinside.com 2019 - 2024. All rights reserved.