我需要在主应用中创建一个子进程,每隔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
我发现了很多关于多处理的事情,但是钢铁无法弄清楚我是如何做到这一点的。
答案 0 :(得分:1)
我们通常在多处理或线程中使用queue来共享数据或结果。但是,对于使用list
和dict
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