有一个字典变量,需要在多个进程间共享
使用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()