Python multiprocessing模块中的Pipe管道使用实例

yipeiwu_com6年前Python基础

multiprocessing.Pipe([duplex])
返回2个连接对象(conn1, conn2),代表管道的两端,默认是双向通信.如果duplex=False,conn1只能用来接收消息,conn2只能用来发送消息.不同于os.open之处在于os.pipe()返回2个文件描述符(r, w),表示可读的和可写的

实例如下:

复制代码 代码如下:

#!/usr/bin/python
#coding=utf-8
import os
from multiprocessing import Process, Pipe

def send(pipe):
    pipe.send(['spam'] + [42, 'egg'])
    pipe.close()

def talk(pipe):
    pipe.send(dict(name = 'Bob', spam = 42))
    reply = pipe.recv()
    print('talker got:', reply)

if __name__ == '__main__':
    (con1, con2) = Pipe()
    sender = Process(target = send, name = 'send', args = (con1, ))
    sender.start()
    print "con2 got: %s" % con2.recv()#从send收到消息
    con2.close()

    (parentEnd, childEnd) = Pipe()
    child = Process(target = talk, name = 'talk', args = (childEnd,))
    child.start()
    print('parent got:', parentEnd.recv())
    parentEnd.send({x * 2 for x in 'spam'})
    child.join()
    print('parent exit')

输出如下:

复制代码 代码如下:

con2 got: ['spam', 42, 'egg']
('parent got:', {'name': 'Bob', 'spam': 42})
('talker got:', set(['ss', 'aa', 'pp', 'mm']))
parent exit

相关文章

python实现给数组按片赋值的方法

本文实例讲述了python实现给数组按片赋值的方法。分享给大家供大家参考。具体如下: 这段代码可以直接给数组的第5-7个元素赋值 inventory = ["sword", "arm...

利用Pandas和Numpy按时间戳将数据以Groupby方式分组

首先说一下需求,我需要将数据以分钟为单位进行分组,然后每一分钟内的数据作为一行输出,因为不同时间的数据量不一样,所以所有数据按照最长的那组数据为准,不足的数据以各自的最后一个数据进行补足...

Python 将Matrix、Dict保存到文件的方法

如下所示: >>> import numpy >>> mat = numpy.matrix("1 2 3; 4 5 6; 7 8 9") >...

python实现简易云音乐播放器

本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上...

TensorFlow索引与切片的实现方法

TensorFlow索引与切片的实现方法

索引与切片在Tensorflow中使用的频率极其高,可以用来提取部分数据。 1.索引 在 TensorFlow 中,支持基本的[𝑖][𝑗]…标准索引方...