from multiprocessing import Process,Queue import time import random ''' 进程间两种方式传递数据 项目方式:生产包子和吃包子 进程的队列和线程的队列不一样 线程队列queue.Queue() --------- 进程队列multiprocessing.Queue() ''' def aoo(que): while True: #开始生产包子并放置到包子队列中 rr = random.randint(1,100) que.put(rr) print("现在生产了%s号包子"%rr) time.sleep(1) def boo(que): while True: #开始再包子队列中拿包子吃 qg = que.get() print("现在吃了%s号包子"%qg) if __name__ == "__main__": que = Queue() #创建进程队列 pros = [] for i in range(3): # 创建三个进程生产包子 pro1 = Process(target=aoo,args=(que,)) pros.append(pro1) #把que传递到函数方法中实现共享队列 pro1.start() pro2 = Process(target=boo,args=(que,)) pros.append(pro2) pro2.start() #创建一个进程吃包子 for pr in pros: #所有进程执行完后再执行 pr.join() print("-------我是主Process进程")
from multiprocessing import Pipe,Process def aoo(conn): conn.send("ddd") print(conn.recv()) if __name__ == "__main__": parent_conn,child_conn = Pipe() #创建管道便于信息互通 pro = Process(target=aoo,args=(child_conn,)) #创建进程,并将子进程传递给函数conn pro.start() print(parent_conn.recv()) parent_conn.send("jjjjj") pro.join()