管道:是python多进程中一种交换数据的方式

 from multiprocessing import Process,current_process,Queue,Pipe
import time
import pickle def func_left(q,left):
for a in range(5000):
b = q.get()#从队列中获取数据
print('向右管道发送数据',b)
msg = pickle.dumps(b)#给右管道发送数据 数据是序列化之后的数据
# left.send(msg)#发送数据 def func_right(q,right):
for a in range(5000):
#从队列中获取数据
msg = pickle.loads(right.recv())#从右管道接受数据 数据是反序列化之后的数据
print('接受到左管道发送的数据',msg)#打印出接受的数据 def main():
q = Queue()#新建立一个queue共享数据
for a in range(10001):
q.put(a)
left,right = Pipe()#建立双管道
p1 = Process(target = func_left,name = '左管道',args=(q,left))
p2 = Process(target = func_right,name = '右管道',args=(q,right))
p1.start()
p2.start() if __name__ == '__main__':
main()

管道默认是阻塞状态,双通管道

python Pipe 双管道通信的更多相关文章

  1. pipe()管道通信

    管道 管道的概念: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如下特质: 1. 其本质是一个伪文件(实为内核缓冲区) 2. 由两个 ...

  2. 管道通信,王明学learn

    管道通信 一.通讯目的 1.数据传输 一个进程需要将数据发送给另一个进程. 2.资源共享 多个进程之间共享同样的资源. 3.通知事件 一个进程需要向另一个/组进程发送消息,通知它们发生了某事件. 4. ...

  3. Linux下进程间管道通信小作业

    在进行这次作业之前,我们先来看看什么是管道吧! 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间, ...

  4. Linux学习记录--命名管道通信

    命名管道通信 什么是命名管道 一个主要的限制是,它是匿名管道的应用还没有名字,因此,只有它可以用于进程间通信的方式与亲缘关系.在命名管道(named pipe或FIFO)提出后,该限制得到了克服.FI ...

  5. C++和C#进程之间通过命名管道通信(上)

    C++和C#进程之间通过命名管道通信(上) "命名管道"是一种简单的进程间通信(IPC)机制.命名管道可在同一台计算机的不同进程之间,或在跨越一个网络的不同计算机的不同进程之间,支 ...

  6. Python Subprocess Popen 管道阻塞问题分析解决

    http://ju.outofmemory.cn/entry/279026 场景:1>不断播放mp3文件: 2>使用订阅发布模式保持tcp长连接,从服务器接收信息 造成程序hang死,但是 ...

  7. PHP多进程编程(2):管道通信

    一个进程如果是个人英雄主义,那么多进程就是集体主义.(不严格区分多进程 和 多线程的差别) 你不再是一个独行侠,而是一个指挥家. 独来独往,非常自由自在,但是,很多时候,不如众人拾柴火焰高. 这就是我 ...

  8. Linux IPC之管道通信

    2017-04-07 管道通信在linux中使用较为频繁的进程通信机制.基于unix一切皆文件的传统,管道也是一种文件.所以可以使用一般的VFS接口对管道进行读写操作,如read.write.具体管道 ...

  9. c# c++通信--命名管道通信

    进程间通信有很多种,windows上面比较简单的有管道通信(匿名管道及命名管道) 最近做个本机c#界面与c++服务进行通信的一个需求.简单用命名管道通信.msdn都直接有demo,详见下方参考. c+ ...

随机推荐

  1. sql的存储过程实例--循环动态创建表

    创建一个存储过程,动态添加100张track表表名track_0 ~~ track_99注:sql的拼接只能用 CONCAT()函数 -- 创建一个存储过程 CREATE PROCEDURE crea ...

  2. 分享一个shell脚本的坑:grep匹配+wc取值 在脚本执行后的结果与手动执行结果不一致

    打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中. 先找出其中一台远程机器,查看main进程运行情况 [root@two002 tmp]# ps -ef|grep ...

  3. 【JS点滴】声明提前,变量声明提前,函数声明提前,声明提前的先后顺序

    声明提前,函数声明提前,好吧,老生常谈的问题了.正好,前些天在掘金看到一道关于声明提前的笔试题,那么这里就以这道题来作为本文的引子吧,代码如下: console.log(a)//? a();//? ; ...

  4. JavaEE----登陆界面验证码实现

    主要使用后端验证,调用awt API ,会简单调用即可,绘图代码已封装到LoginVerifyUtils中. 界面展示: LoginVerifyUtils全部代码 import java.awt.Co ...

  5. Css相册

    对于相册,大家都很熟悉,常见的一种如下图所示: 当你点击下面的数字的时候,就会换一张图片,直接用链接就可以实现,很简单.下面我们将介绍其他两种css相册. 第一种css相册: 我们先来看看示意图: 当 ...

  6. core Animation之CAAnimationGroup(动画群组)

    可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性解析: animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象 ...

  7. flink-vs.-spark

    这段时间,开始学习Flink,并了解了Spark与Flink的区别,开始觉得Flink大有取代Spark的趋势啊,实时流始终目前是Spark的瓶颈呀,下面来一张对比图: 图片来源于:https://j ...

  8. EF访问数据库报“ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。”错误

    我发生这个问题的原因是因为我用EF访问数据库时用的用到了两用方式,如下图 第一种方式访问时不会出现此错误,出现错误的是第二种方式,下图是dal层代码 其中红框中的代码是出现错误之后改正的代码,也就是说 ...

  9. 华中农业大学第五届程序设计大赛网络同步赛-K

    K.Deadline There are N bugs to be repaired and some engineers whose abilities are roughly equal. And ...

  10. 让一个小div在另一个大div里面 垂直居中的四种方法

    方法一 .parent { width:800px; height:500px; border:2px solid #000; position:relative; } .child { width: ...