10.4.15 管理共享状态
在前面的例子中,ActivePool实例通过一个特殊类型列表对象(由Manager创建)集中维护活动进程列表。Manager负责协调其所有用户之间共享的信息状态。
import multiprocessing
import pprint
def worker(d,key,value):
d[key] = value
if __name__ == '__main__':
mgr = multiprocessing.Manager()
d = mgr.dict()
jobs = [
multiprocessing.Process(
target=worker,
args=(d,i,i * 2),
)
for i in range(10)
]
for j in jobs:
j.start()
for j in jobs:
j.join()
print('Results:',d)
因为这个列表是通过管理器创建的,所以它会由所有进程共享,所有进程都能看到这个列表的更新。除了列表,管理器还支持字典。
运行结果: