|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
主进程中建了一个管子,每个子进程中也有使用管子的返回值,按理说,每个进程中的管子的两个口都是分配了独立的内存空间的,为什么进程间还能通过管子通讯呢?每个管子的两个口,通过id的输出 显示的很清楚了,不一样啊。
- from multiprocessing import Process,Pipe
- def demo1(pipe):
- left,right=pipe
- print('demo1,left.fileno is %d,right.fileno is %d'%(left.fileno(),right.fileno()))
- print('demo1,id(left) is %d,id(right) is %d'%(id(left),id(right)))
- right.close()
- while True:
- try:
- s = left.recv()
- print(s)
- except:
- left.close()
- print('pipe close')
- break
- def demo2(pipe):
- left,right=pipe
- print('demo2,left.fileno is %d,right.fileno is %d'%(left.fileno(),right.fileno()))
- print('demo2,id(left) is %d,id(right) is %d'%(id(left),id(right)))
- left.close()
- for i in range(5):
- try:
- right.send(i)
- except:
- print('pipe close')
- break
- right.close()
- if __name__ == '__main__':
- pipe=Pipe()
- left, right = pipe
- print('__main__,left.fileno is %d,right.fileno is %d'%(left.fileno(),right.fileno()))
- print('__main__,id(left) is %d,id(right) is %d'%(id(left),id(right)))
- p1=Process(target=demo1,args=(pipe,))
- p2=Process(target=demo2,args=(pipe,))
- p1.start()
- p2.start()
- left.close()
- right.close()
复制代码
|
|