manager 实现进程之间的数据共享 list dict

manager 能够实现进程之间的数据共享 (list,dict)

  如果多个进程同事修改同一份共享数据,这个时候需要加锁,保证数据的准确性。

  (1) dict list 可以实现进程之间的数据共享
  (2)为了保证数据的准确性,需要加锁

基本语法:

m = Manager()

dic = m.dic({"count":1000}) 或者 lst = m.list({"count":1000})

 1 from multiprocessing import Process,Manager,Lock
 2 def work(dic,lock):
 3     # with 语法 可以自动的上锁和解锁
 4     with lock:
 5         dic["count"] -= 1
 6     """
 7     lock.acquire()
 8     dic["count"] -= 1
 9     lock.release()
10     """
11 
12 if __name__ == '__main__':
13     lst = []
14     # 创建一把锁
15     lock = Lock()
16     m = Manager()
17     dic = m.dict({"count" : 1000})
18 
19     for i in range(100):
20         p = Process(target=work,args=(dic,lock))
21         p.start()
22         lst.append(p)
23 
24     for i in lst:
25         i.join()
26 
27     print(dic,type(dic))

猜你喜欢

转载自www.cnblogs.com/youhongliang/p/11871337.html