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

Posted youhongliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))

 

以上是关于manager 实现进程之间的数据共享 list dict的主要内容,如果未能解决你的问题,请参考以下文章

进程之间数据共享 Manager()

python多进程

38. Python 多进程Manager 进程池

python 多进程共享全局变量之Manager()

Manager解决Process进程之间的数据访问

进程中的Manager(),实现多进程的数据共享与传递