成都创新互联网站制作重庆分公司

多进程_父进程子进程数据传递共享

进程queue传递
frommultiprocessingimportProcess,Queue

deff(qq):
    qq.put([42,None,'hello'])

if__name__ =='__main__':
    q = Queue()#父进程queue
   
p = Process(target=f,args=(q,))#子进程 父进程的queue传给子进程 实现数据传递
   
p.start()#启动子进程
   
print(q.get()) # prints "[42, None, 'hello']"父进程q可以get到子进程p实现父进程子进程数据共享
   
p.join()

#线程queue不能传给进程

为留坝等地区用户提供了全套网页设计制作服务,及留坝网站建设行业解决方案。主营业务为网站制作、网站建设、留坝网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

 
管道传递
frommultiprocessingimportProcess, Pipe

deff(conn):
    conn.send([42,None,'hello from child'])
    conn.send([43,None,'hello from child2'])
   print("child recv:",conn.recv())
    conn.close()

if__name__ =='__main__':
    parent_conn, child_conn = Pipe() #生成管道实例,取出两端
    p = Process(target=f,args=(child_conn,))
    p.start()
   print(parent_conn.recv())# prints "[42, None, 'hello']"
   
print(parent_conn.recv())
    parent_conn.send("hello send by parent")
    p.join()

manager数据共享
frommultiprocessing importProcess, Manager
importos

deff(d, l):#每个子进程执行的函数
   
d[os.getpid()]=os.getpid()
    l.append(os.getpid())
   print(l)


if__name__ =='__main__':
   withManager()asmanager:#
       
d = manager.dict()#父进程生成一个字典 多个进程之间可共享的字典

       
l = manager.list(range(5))#父进程生成一个列表 多个进程之间可以共享的列表 默认有5个数据
       
p_list = []#用于多个进程join
       
foriinrange(10):
            p = Process(target=f,args=(d, l))
            p.start()#开启10个子进程
           
p_list.append(p)
       forresinp_list:#等待每个子进程结果
           
res.join()

       print(d)
       print(l)

文章名称:多进程_父进程子进程数据传递共享
文章分享:http://cxhlcq.com/article/piisdh.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部