有一个字典变量,需要在多个进程间共享

 

使用Manager, 下面是一个小例子。 注意使用json前需要将类型转换。

#!/usr/bin/python
# coding=utf-8


import json
from multiprocessing import Process, Lock, Manager


def deal(data, lock, share_dict):
    # do something
    share_dict["test"] = 10
    mydict = dict(share_dict)  # 注意,共享dict无法直接dumps,会报类型错误,必须先转换为普通字典
    json.dumps(mydict)

def deal_multi():
    data = "test"
    n = 10
    process = list()
    lock = Lock()    #  多进程锁
    m = Manager()    
    share_dict = m.dict()   #  多进程共享变量 字典
    for i in xrange(n):
        process.append(Process(target=deal, args=(data, lock, share_dict)))
    for p in process:
        p.start()
    for p in process:
        p.join()


if __name__ == '__main__':
    deal_multi()