如何使用多重处理在多个进程之间共享字典
创建在共享队列上运行并利用全局字典的多个进程时对于结果存储,解决同步问题以确保准确的数据操作至关重要。
同步对共享字典的访问的一种方法是使用一个管理器对象。 Manager 提供了一种创建和管理可由多个进程访问的共享对象的机制。
在此特定场景中,您可以将 Manager 对象合并到代码中,如下所示:
from multiprocessing import Process, Manager def f(d): d[1] += '1' d['2'] += 2 if __name__ == '__main__': manager = Manager() d = manager.dict() d[1] = '1' d['2'] = 2 p1 = Process(target=f, args=(d,)) p2 = Process(target=f, args=(d,)) p1.start() p2.start() p1.join() p2.join() print(d)
Manager.dict() 方法创建一个可由任何进程访问的共享字典。通过将此字典作为参数传递给每个进程,您允许它们同时操作数据。
加入进程后,主进程可以打印共享字典的内容,这将反映累积的结果由所有子进程。
这种方法可确保所有进程都可以访问同一字典,并且一个进程所做的修改对其他进程可见,从而解决了同步问题。
以上是如何使用多重处理在多个进程之间共享字典?的详细内容。更多信息请关注PHP中文网其他相关文章!