码迷,mamicode.com
首页 > 系统相关 > 详细

多进程共享数据,真正的通信Manager

时间:2018-05-18 15:48:21      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:eve   ppi   lis   read   别名   port   div   tar   ==   

Managers

A manager object returned by Manager() controls a server process which holds Python objects and allows other processes to manipulate them using proxies.

A manager returned by Manager() will support types listdictNamespaceLockRLockSemaphoreBoundedSemaphoreConditionEventBarrierQueueValue and Array. For example,

 

from multiprocessing import Process,Manager
import threading,time,os

def sub(d,l):
    d[os.getpid()] = os.getpid()
    l.append(os.getppid())
    print(l)
    #print(d)
if __name__ == ‘__main__‘:
    with Manager() as M: #with..as的作用是把Manager()生成一个别名M,并只有在with内有效
        d = M.dict()    #用了with,下面也可以不用。
        l = Manager().list(range(5))
        p_list = []    #这个列表保存生成的多个进程 ,方便促一join()。等待全部完成,
        for i in range(10):
            t = Process(target=sub,args=(d,l))
            t.start()
            p_list.append(t)
        for i in p_list:
            i.join()
        print(d,l)

  ...

 

多进程共享数据,真正的通信Manager

标签:eve   ppi   lis   read   别名   port   div   tar   ==   

原文地址:https://www.cnblogs.com/alex-hrg/p/9056008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!