进程通信和数据共享两种方式

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()

猜你喜欢

转载自www.cnblogs.com/TKOPython/p/12461644.html