Bootstrap

python multiprocess.pool中进程共享dict

形如

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))
;