zoukankan      html  css  js  c++  java
  • Managers经理/代理形式的数据共享

    代理方式实现进程间共享字典和列表形式的数据,

    代码块:

    import os
    from multiprocessing import  Process,Manager
    
    
    def f(d,l,normalList):
        d[1]='1'
        d['2']=2
        d[0.25]=None
        l.append(os.getpid())
        # 普通数组无法实现数据共享,所以不能显示保存所有数据,每次只显示当前数据的最后一位
        normalList.append(os.getpid())
        # d.add(os.getpid())字典没有add和appen的函数,所以此处无法调用
        print(l,'共享数组')
        print(normalList,'普通数组')
        # print(d,'这是共享字典')
        '''
        以代理的方式在进程间共享字典或列表形式的数据
        '''
    
    
    if __name__=='__main__':
        with Manager() as manager:
            # 生成一个字典,在多个进程之间共享和传递
            d=manager.dict()
            # 生成一个列表含5个初始值,在多个进程间传递和共享
            l=manager.list(range(5))
            # 设置p_list放置每一个进程
            p_list=[]
            # 设置普通数组,与代理数组对比不同
            normalList=[]
            for i in range(10):
                p=Process(target=f,args=(d,l,normalList))
                p.start()
                p_list.append(p)
            # 给每一个进程设置暂停时间
            for res in p_list:
                res.join()
                print(res, 'p_list的res')
            print(d,'这是共享字典')
            print(l,'这是共享数组')
            # print(p_list,'添加所有共享数据的列表')
  • 相关阅读:
    的地方d'fe'w
    日期
    equals方法
    接口作为成员变量类型
    匿名内部类注意事项
    匿名内部类
    局部内部类注意问题
    可以
    C中的volatile关键字
    继承权限问题
  • 原文地址:https://www.cnblogs.com/Dark-fire-liehuo/p/9757643.html
Copyright © 2011-2022 走看看