multiprocessing: How do I share a dict among multiple processes?

后端 未结 5 556
执念已碎
执念已碎 2020-11-22 11:49

A program that creates several processes that work on a join-able queue, Q, and may eventually manipulate a global dictionary D to store results. (

5条回答
  •  轮回少年
    2020-11-22 12:44

    A general answer involves using a Manager object. Adapted from the docs:

    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
    

    Output:

    $ python mul.py 
    {1: '111', '2': 6}
    

提交回复
热议问题