代理方式实现进程间共享字典和列表形式的数据,
代码块:
import os from multiprocessing import Process,Manager def f(d,l,normalList): d[1]='1' d['2']=2 d[0.25]=None l.append(os.getpid()) # 普通数组无法实现数据共享,所以不能显示保存所有数据,每次只显示当前数据的最后一位 normalList.append(os.getpid()) # d.add(os.getpid())字典没有add和appen的函数,所以此处无法调用 print(l,'共享数组') print(normalList,'普通数组') # print(d,'这是共享字典') ''' 以代理的方式在进程间共享字典或列表形式的数据 ''' if __name__=='__main__': with Manager() as manager: # 生成一个字典,在多个进程之间共享和传递 d=manager.dict() # 生成一个列表含5个初始值,在多个进程间传递和共享 l=manager.list(range(5)) # 设置p_list放置每一个进程 p_list=[] # 设置普通数组,与代理数组对比不同 normalList=[] for i in range(10): p=Process(target=f,args=(d,l,normalList)) p.start() p_list.append(p) # 给每一个进程设置暂停时间 for res in p_list: res.join() print(res, 'p_list的res') print(d,'这是共享字典') print(l,'这是共享数组') # print(p_list,'添加所有共享数据的列表')