'''
两条进程通过管道共享数据
'''
import multiprocessing
import time
def sendData(conn):
for i in range(5):
conn.send("good afternoon")
time.sleep(1)
conn.close()
pass
def recvData(conn):
mlist = []
while True:
try:
data = conn.recv()
print(data)
mlist.append(data)
if len(mlist) > 3:
conn.close()
except OSError:
print("该死的管道已关闭")
pass
conn.close()
pass
def pipeDemo():
pipe = multiprocessing.Pipe(duplex=False)
multiprocessing.Process(target=sendData, args=(pipe[1],)).start()
multiprocessing.Process(target=recvData, args=(pipe[0],)).start()
def work1(conn):
for i in range(5):
conn.send("来自甲方的问候-%d"%(i))
conn.send("来自甲方对全家的问候-%d" % (i))
print("甲方:收到问候{1}{0}".format(conn.recv(),conn.recv()))
time.sleep(1)
conn.close()
pass
def work2(conn):
for i in range(5):
conn.send("来自乙方的问候-%d"%(i))
conn.send("来自乙方对全家的问候-%d"%(i))
print("乙方:收到问候{1}{0}".format(conn.recv(),conn.recv()))
time.sleep(1)
conn.close()
pass
def duplexPipeDemo():
pipe = multiprocessing.Pipe(duplex=True)
multiprocessing.Process(target=work1, args=(pipe[0],)).start()
multiprocessing.Process(target=work2, args=(pipe[1],)).start()
if __name__ == "__main__":
duplexPipeDemo()
print("main over")