11数据共享Manager
一、进程之间数据共享
-
Manager类
- manager类可以创建一个共享的数据类型
- 可以供不同进程之间数据交互
-
Manager类特点
- 数据是不安全的
- 因为进程进行计算的时候,需要时间才能计算出结果
- 假设a=1,子进程要把a+1并返回给a,A进程开始计算,在计算过程中B进程来了,此时B进程拿到的a的值仍然是1,但是已经来了两个进程计算了两次了
- 可以使用Lock来解决,只不过会降低代码执行效率
-
例如
from multiprocessing import Process,Manager,Lock #字典的count值减1 def change_dic(dic,lock): #把代码锁住,同一时间只有一个进程可以执行该代码 with lock: dic['count']-=1 if __name__ == '__main__': lock=Lock() m=Manager() dic=m.dict({'count':100}) p_l=[] for i in range(100): p=Process(target=change_dic,args=(dic,lock)) p.start() p_l.append(p) for p in p_l:p.join() print(dic)
本文来自博客园,作者:majic_jie,转载请注明原文链接:https://www.cnblogs.com/majic-jie/articles/17546752.html

浙公网安备 33010602011771号