Python 多个进程之间的共享配置变量
假设你有一个Python 多个进程之间的共享配置变量,python,dictionary,parallel-processing,multiprocessing,multiple-processes,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: slee
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']
在运行foo.py
后,您如何随时使用新值保持bar.py
中的打印值最新,而无需再次明显读取文件,因为bar.py
中的while循环需要尽可能快
我目前在单独的bash线程上运行这些线程,即:
$ python bar.py
$ python foo.py
但如果可能的话,我可以在一个线程中运行bar?我不知道您需要多快的速度。但是,当然可以使用重新加载
config
模块。因此config.py
和foo.py
保持不变,您的bar.py
更改为:
import importlib
import config
while True:
print config.settings['foo']
sleep(10)
importlib.reload(config)
更新
上面的示例适用于Python>=3.4,用于早期版本的Python 3或Python 2。是否使用任何标准IPC机制作为foo和bar之间通信的选项?我从
bar.py
中的线程运行foo.py
threading.thread()