11数据共享Manager

一、进程之间数据共享

  1. Manager类

    • manager类可以创建一个共享的数据类型
    • 可以供不同进程之间数据交互
  2. Manager类特点

    • 数据是不安全的
    • 因为进程进行计算的时候,需要时间才能计算出结果
    • 假设a=1,子进程要把a+1并返回给a,A进程开始计算,在计算过程中B进程来了,此时B进程拿到的a的值仍然是1,但是已经来了两个进程计算了两次了
    • 可以使用Lock来解决,只不过会降低代码执行效率
  3. 例如

    from multiprocessing import Process,Manager,Lock
    #字典的count值减1
    def change_dic(dic,lock):
        #把代码锁住,同一时间只有一个进程可以执行该代码
        with lock:
            dic['count']-=1
    
    if __name__ == '__main__':
        lock=Lock()
        m=Manager()
        dic=m.dict({'count':100})
        p_l=[]
        for i in range(100):
            p=Process(target=change_dic,args=(dic,lock))
            p.start()
            p_l.append(p)
        for p in p_l:p.join()
        print(dic)
    
posted @ 2023-07-12 09:52  majic_jie  阅读(17)  评论(0)    收藏  举报