Python网编_进程间的数据共享
Posted 码码忽忽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python网编_进程间的数据共享相关的知识,希望对你有一定的参考价值。
Manager提供了很多数据共享机制,但是对于一些基础数据类型来说,是数据不安全的,那么Q:如何解决呢?
A: 需要我们自己手动加锁
from multiprocessing import Manager,Process,Lock # Process开子进程用,Lock数据加锁用,Manager进程间数据共享用 def work(d,lock): # lock.acquire() # d[‘count‘] -= 1 # lock.release() with lock: # 上下问管理 注意了lock锁的并不是‘count‘这个数据 而是d[‘count‘] -= 1这句代码 d[‘count‘] -= 1 # 这句之前的上文是lock.acquire()下文是lock.release() if __name__ == ‘__main__‘: lock = Lock() m = Manager() # 实例化一个m dic = m.dict({‘count‘:100}) # 调用m的dict方法 p_l = [] for i in range(100): p = Process(target=work,args=(dic,lock)) p.start() p_l.append(p) for p in p_l: p.join() print(dic) 执行结果: 0
进程间默认是数据隔离的,所以一般不会写数据共享,即使要写,使用队列的数据安全性更好一些,一般不用Manager。
以上是关于Python网编_进程间的数据共享的主要内容,如果未能解决你的问题,请参考以下文章
python全栈开发day33-进程间的通信进程间的数据共享,进程池