假设你有里面的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
但是如果可能的话,我可以在线程中运行吧?
我不知道你需要多快。但是肯定可以用config
重新加载importlib.reload
模块。所以config.py
和foo.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。