zoukankan      html  css  js  c++  java
  • python进程之间修改数据[Manager]与进程池[Pool]

    #前面的队列Queue和管道Pipe都是仅仅能再进程之间传递数据,但是不能修改数据,今天我们学习的东西就可以在进程之间同时修改一份数据
    #Mnager就可以实现
    import multiprocessing
    import random
    def f(l,n):
        l.append(n)
    
    if __name__ == '__main__':
        m = multiprocessing.Manager()
        m_dict = m.dict()
        m_list = m.list(range(4))
        p_list = []
        for i in range(10):
            p = multiprocessing.Process(target=f,args=(m_list,i))
            p.start()
            p_list.append(p)
        for p in p_list:
            p.join()
        print(m_list)
    

     

    结果如下

    '''
    结果如下,实现不同进程之间修改数据
    [0, 1, 2, 3, 0, 3, 1, 4, 6, 2, 8, 9, 7, 5]
    
    '''
    
    # 进程池,允许同一时间最多有多少个进程在运行,因为进程非常耗费资源
    import time
    import multiprocessing
    
    def Foo(i):
        time.sleep(2)
        return i + 100
    
    def Bar(arg):
        print("---exec down:",arg)
    
    if __name__ == '__main__':
        multiprocessing.freeze_support()
        #windows的多进程必须要加这个一项
        pool = multiprocessing.Pool(3)
        for i in range(10):
            pool.apply_async(func=Foo,args=(i,),callback=Bar)
            #这句话有3个意思
            #1、apply_async这个意思是异步执行
            #2、这里的意思执行Foo,参数为i,callback这里的意思就是Foo这个函数的返回值作为Bar的函数输入,这个是自动传递的;
            #3、这里还有一个意思是,执行Foo这个函数后,然后才执行Bar这个函数
    #4、这里我们可以在Bar这个函数中接受子进程的执行结果,我们就可以把这个结果放在一个list中,从而也可以间接获取到子进程的执行结果 print("end") pool.close() pool.join() #pool的时候必须先close,然后在join,这个必须要记住,pool的用法不一样

    结果如下

    end
    ---exec down: 100
    ---exec down: 101
    ---exec down: 102
    ---exec down: 103
    ---exec down: 104
    ---exec down: 105
    ---exec down: 106
    ---exec down: 107
    ---exec down: 108
    ---exec down: 109
    

     

  • 相关阅读:
    v-model的实现原理
    面试技巧
    Vue中使用mui的tab-top-webview-main完成分类滑动栏出现兼容问题如何解决
    前端jquery面试题个人总结
    下拉复选框
    什么是BFC
    CSS控制文本自动换行
    CSS+DIV布局中absolute和relative区别
    2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面
    vue页面无操作10分钟内调转到登录页面
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7407270.html
Copyright © 2011-2022 走看看