python_并发编程——数据共享
Posted 手可摘星辰。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_并发编程——数据共享相关的知识,希望对你有一定的参考价值。
1.数据共享
实现进程之间的数据共享
from multiprocessing import Manager,Process class MyPro(Process): def __init__(self,dic): super().__init__() self.dic = dic def run(self): self.dic[\'count\'] -= 1 print(self.dic) if __name__ == \'__main__\': m = Manager() dic = m.dict({\'count\':100}) p = MyPro(dic) p.start() p.join() print(\'主进程:\',dic)
结果:
2.但是这种数据共享还是存中安全性问题,当有多个进程同时访问数据的时候,还是会出错,当应用在有多个进程的时候,还是要加锁。
from multiprocessing import Manager,Process,Lock class MyPro(Process): def __init__(self,dic,lock): super().__init__() self.dic = dic self.lock = lock def run(self): self.lock.acquire() self.dic[\'count\'] -= 1 self.lock.release() # print(self.dic) if __name__ == \'__main__\': lock = Lock() m = Manager() dic = m.dict({\'count\':100}) p_list = [] for i in range(50): p = MyPro(dic,lock) p.start() p_list.append(p) for i in p_list: p.join() print(\'主进程:\',dic)
结果:
以上是关于python_并发编程——数据共享的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段