目录
一、进程间通信:管道(multiprocess.Pipe)
管道示意图:
子进程接收主进程消息:
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(20):
conn2.send('吃了么')
conn2.close()
代码解释:
EOFError:管道取完所有数后,继续取数据时所报的错误
同一个管道在主进程管道口A(conn1.close())的关闭,不会影响子进程的管道口A的接受数据(conn1.recv())
二、管道实现生产者消费模型
from multiprocessing import Process,Pipe,Lock
def consumer(produce, consume,name,lock):
produce.close()
while True:
lock.acquire()