当前位置: 首页 > 编程笔记 >

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

相弘方
2023-03-14
本文向大家介绍Python multiprocessing模块中的Pipe管道使用实例,包括了Python multiprocessing模块中的Pipe管道使用实例的使用技巧和注意事项,需要的朋友参考一下

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

 类似资料:
  • 创建一个管道,Linux系统中有pipe()和pipe2()两个函数。 Linux仅支持半双工管道 pipe 函数原型 #include <unistd.h> int pipe(int pipefd[2]); 参数 pipefd[0] 读端 pipefd[1] 写端 返回值 0 成功 -1 失败,并自动设置 errno —— pipe2 pipe2非POSIX标准,仅被Linux支持 函数原

  • 一个Java NIO的管道是两个线程间单向传输数据的连接。一个管道(Pipe)有一个source channel和一个sink channel(没想到合适的中文名)。我们把数据写到sink channel中,这些数据可以同过source channel再读取出来。 下面是一个管道的示意图: 创建管道(Creating a Pipe) 打开一个管道通过调用Pipe.open()工厂方法,如下: Pi

  • 主要内容:1 创建管道,2 写入管道,3 从管道读取Java NIO Pipe是两个线程之间的单向数据连接。APipe 具有源通道和宿通道。您将数据写入接收器通道。然后可以从源通道读取此数据。 这是Pipe原理的说明: Java NIO:管道内部 1 创建管道 Pipe通过调用该Pipe.open()方法来 打开一个。看起来是这样的: 2 写入管道 要写入a,Pipe您需要访问接收器通道。这是完成的方式: 您可以SinkChannel通过调用a的w

  • 想用一下管道,这是哪里出了问题? 1.pipe interface

  • 传递参数 链接管道 我们可以将多个管道连接在一起,以便在一个表达式中使用多个管道。

  • 我刚开始使用Jenkins声明性管道。在我支持一些类似的项目时,我考虑将类似的管道步骤(甚至阶段)放入可重用的构建块中。这些区块应保持在一个中心点,然后由单独的管道包括在内(例如:干燥)。 我将共享库视为脚本化管道的一个选项,但我不确定它是否也适用于声明性管道。 你知道在Jenkins声明性管道中使用像构建块这样的东西的方法吗? 举例说明: 如果您有一个用于Maven项目的标准管道(例如Sprin