Python:用于更新父级使用的全局资源的子进程

时间:2016-04-28 21:23:39

标签: python multithreading python-multiprocessing

我需要在主应用中创建一个子进程,每隔n秒更新一次dict。

这个字典将被父进程用作全局变量。

这是我正在尝试做的伪代码:

dict_ = {"a":12,"b":23}


def child_process()
    global dict_
    while True:
       # update dict_
       time.sleep(n)

def parent_process():
    global dict_
    # use dict_ WITHOUT MODIFYING IT

if __name__ == '__main__':
    # 1- run child process 
    # 2- run parent process

我发现了很多关于多处理的事情,但是钢铁无法弄清楚我是如何做到这一点的。

1 个答案:

答案 0 :(得分:1)

我们通常在多处理或线程中使用queue来共享数据或结果。但是,对于使用listdict Managers等python构造。请在此处找到您的要求:

from multiprocessing import Process, Manager

dict_ = Manager().dict({"a":12,"b":23})

def child_process(_dict):
    while _dict['b'] < 30:
        _dict['b'] += 1

if __name__ == '__main__':
    proc = Process(target=child_process, args=(dict_,))
    proc.start()
    # Here output printed is value from 23 to 30.
    # while proc.is_alive():
    #     print dict_.get("b")
    proc.join()
    print dict_.get("b")    # prints 30