形如
dict={}
def subprocess(dict):
write_to(dict)
with Pool(2) as p:
p.map(subprocess,dict for i in some_times)
方式传dict,检查传入的id(dict)与定义的dict不相同。
解决方法:使用multiprocess.Manager().dict()
。同时注意要使用multiprocess.Manager().lock()
锁
from multiprocess import Manager
dict=Manager().dict()
def subprocess(args):
dict,lock = args
lock.acquire()
try:
write_to(dict)
finally:
lock.release()
with Pool(2) as p:
lock = Manager().lock()
p.map(subprocess,((dict,lock) for i in some_times))