【问题标题】:Shared config variable between multiple processes多个进程之间共享配置变量
【发布时间】:2019-05-28 14:22:11
【问题描述】:

假设你有一个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 吗?

【问题讨论】:

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


【解决方案1】:

我不知道你需要多快。但是当然可以用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

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2012-07-22
    • 2015-11-19
    • 2015-09-21
    • 2019-08-03
    • 2015-04-08
    相关资源
    最近更新 更多