zoukankan      html  css  js  c++  java
  • 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)

    结果:

  • 相关阅读:
    mysql的sql执行计划
    JMX
    用 Cobertura 测量测试覆盖率
    javap反汇编的使用
    Java ASM 技术简介
    基于Java Instrument的Agent实现
    浮动的同级盒子顶对齐
    子绝父相布局
    相对定位,绝对定位和固定定位
    嵌套的定位盒子如何居中?
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/12080687.html
Copyright © 2011-2022 走看看