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

Shared config variable between 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 后的新值保持同步,而无需再次明显读取文件,将其视为bar.py 中的 while 循环需要尽可能快!

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

$ python bar.py
$ python foo.py

但如果可能的话,我可以 运行 在一个线程中发帖?

我不知道你需要多快。但肯定可以只用 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,使用 imp.reload for earlier versions of Python 3 or reload 用于 Python 2.