python 线程与进程学习(8)----进程之间的通信Pipe

前言

    记录一下学习进度.

1.python多进程之Pipe

    Pipe(管道)也是进程之间实现数据通信的一种方式.Pipe的原理就类似于socket,就是生成两头(管道的两头),一头给父进程,一头给子进程(或者可以理解管道的两头分别给两个进程,然后让这两个进程通过管道来实现数据的通信).

2.Pipe的用法

from multiprocessing import Process,Pipe



def func(conn):
    conn.send([42,'fan','hello from child'])
    conn.close()




if __name__ == '__main__':
    Parent_conn,Child_conn = Pipe()     # Pipe实例化时生成两个对象,分别对应管道的两头

    p = Process(target=func,args=(Child_conn,))
    p.start()

    print('parent:',Parent_conn.recv())

执行结果:

parent: [42, 'fan', 'hello from child']

程序解释:
这里实现了两个进程的一收一发.

Parent_conn,Child_conn = Pipe()     # Pipe实例化时生成两个对象,分别对应管道的两头

    实例化Pipe时候会生成两个对象,分别对应管道的两头.

	conn.send([42,'fan','hello from child'])
    conn.close()

    这两句代码实现了child_conn这一头发送数据.

 print('parent:',Parent_conn.recv())

    这是在另一头接收数据.

实现管道两头的互相收发

from multiprocessing import Process, Pipe


def f(conn):
    conn.send([42, None, 'hello from child'])
    conn.send([42, None, 'hello from child2'])
    print("from parent:",conn.recv())
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print(parent_conn.recv())  
    print(parent_conn.recv())  
    parent_conn.send("这是父进程") 
    p.join()

执行结果:

[42, None, 'hello from child']
[42, None, 'hello from child2']
from parent: 这是父进程
写在最后

    本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值