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_并发编程——数据共享的主要内容,如果未能解决你的问题,请参考以下文章

python_并发编程——管道和数据共享

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

Python并发编程—同步互斥

48_并发编程-线程-资源共享/锁

python 归纳 _并发队列Queue的使用

Python - 并发编程