管道

from multiprocessing import Pipe,Process

def func(conn1):
    while True:
        msg = conn1.recv()
        if msg is None: break
        print(msg)

if __name__ == '__main__':
    conn1,conn2 = Pipe()
    Process(target=func,args=(conn1,)).start()
    for i in range(10):
        conn2.send('吃了吗%d'%i)
    conn2.send(None)
    

 

from multiprocessing import Pipe,Process

def func(conn1,conn2):
    conn2.close()
    while True:
        try:
            msg = conn1.recv()
            print(msg)
        except EOFError:
            conn1.close()
            break

if __name__ == '__main__':
    conn1,conn2 = Pipe()
    Process(target=func,args=(conn1,conn2)).start()
    conn1.close()
    for i in range(10):
        conn2.send('吃了吗%d'%i)
    conn2.close()

 

from multiprocessing import Pipe,Process
import time,random

def producer(con,pro,name,food):
    con.close()
    for i in range(4):
        time.sleep(random.random())
        f = '%s生产%s%d'%(name,food,i)
        print(f)
        pro.send(f)
    pro.close()

def consumer(con,pro,name):
    pro.close()
    while True:
        try:
            f = con.recv()
            print('%s吃了%s'%(name,f))
            time.sleep(random.random())
        except EOFError:
            con.close()
            break

if __name__ == '__main__':
    con,pro = Pipe()
    p = Process(target=producer,args=(con,pro,'alex','泔水'))
    c = Process(target=consumer,args=(con,pro,'jin'))
    p.start()
    c.start()
    con.close()
    pro.close()

 

from multiprocessing import Pipe,Process,Lock
import time,random

def producer(con,pro,n):
    con.close()
    for i in range(n):
        pro.send(i)
    pro.send(None)
    pro.send(None)
    pro.close()

def consumer(con,pro,name,lock):
    pro.close()
    while True:
        lock.acquire()
        baozi= con.recv()
        lock.release()
        if baozi:
            print('%s收到包子%d'%(name,baozi))
        else:
            con.close()
            break

if __name__ == '__main__':
    con,pro = Pipe()
    lock = Lock()
    p = Process(target=producer,args=(con,pro,30))
    c = Process(target=consumer,args=(con,pro,'c',lock))
    c2 = Process(target=consumer,args=(con,pro,'c2',lock))
    p.start()
    c.start()
    c2.start()
    con.close()
    pro.close()

 

posted @ 2018-09-08 22:26  Woowo  阅读(133)  评论(0编辑  收藏  举报