多进程_父进程子进程数据传递共享
进程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)
新闻名称:多进程_父进程子进程数据传递共享
URL标题:http://azwzsj.com/article/piisdh.html