ython实现进程间的通信有Queue,Pipe,Value+Array等,其中Queue实现多个进程间的通信,而Pipe实现两个进程间通信,而Value+Array使用得是共享内存映射文件的方式,所以速度比较快
1.Queue的使用
from multiprocessing import Queue,Process
import os,time,random
#添加数据函数
def proc_write(queue,urls):
print("进程(%s)正在写入..."%(os.getpid()))
for url in urls:
queue.put(url)
print("%s被写入到队列中"%(url))
time.sleep(random.random()*3)
#读取数据函数
def proc_read(queue):
print("进程(%s)正在读取..."%(os.getpid()))
while True:
url = queue.get();
print("从队列中提取到:%s"%(url))
if __name__ =="__main__":
queue = Queue()
proc_writer1 = Process(target=proc_write,args=(queue,["ur1","ur2","ur3","ur4"]))
proc_writer2 = Process(target=proc_write,args=(queue,["ur5","ur6","ur7","ur8"]))
proc_reader = Process(target=proc_read,args=(queue,))
proc_writer1.start()
proc_writer2.start()
proc_reader.start()
proc_writer1.join()
proc_writer2.join()
proc_reader.terminate()
2.Pipe的使用
pipe用于两个进程间的通信,两个进程分别位于管道的两端,Pipe方法返回(conn1,conn2)代表一个管道的两端,Pipe方法有dumplex参数,若该参数为True,管道为全双工模式,若为Fasle,conn1只负责接收消息,conn2只负责发送消息.send和recv方法分别是发送和接收消息的方法,例如,在全双工模式下,可以调用conn1.send发送消息,conn1.recv接收消息,如果没有消息可以接收,recv方法会一直阻塞,如果管道已经被关闭,recv方法会抛出EOFError
from multiprocessing import Pipe,Process
import random,time,os
def proc_send(pipe,urls):
for url in urls:
print("进程(%s)发送:%s"%(os.getpid(),url))
pipe.send(url)
time.sleep(random.random())
def proc_recv(pipe):
while True:
print("进程(%s)接收到:%s"%(os.getpid(),pipe.recv()))
time.sleep(random.random())
if __name__ == "__main__":
pipe = Pipe()
p1 = Process(target=proc_send,args=(pipe[0],["url_"+str(i) for i in range(10)],))
p2 = Process(target=proc_recv,args=(pipe[1],))
p1.start()
p2.start()
p1.join()
p2.terminate()
---------------------
作者:诸葛亮
来源:博客园
原文:https://www.cnblogs.com/gaosai/
版权声明:本文为博主原创文章,转载请附上博文链接!
ython实现进程间的通信有Queue,Pipe,Value+Array等,其中Queue实现多个进程间的通信,而Pipe实现两个进程间通信,而Value+Array使用得是共享内存映射文件的方式,所以速度比较快的更多相关文章
- Windows进程间通信--共享内存映射文件(FileMapping)--VS2012下发送和接收
之前以为两个互不相关的程序a.exe b.exe通信就只能通过网络,人家说可以通过发消息,我还深以为不然,对此,我表示万分惭愧. 之前课本上说的进程间通信,有共享内存.管道等之类的,但没有自己操刀写过 ...
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转
原文:C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing ...
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped
节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). 内存映射文件对于托管世界的开发人员来说似乎很陌生,但它确实已经是很远古的技术了,而且在操作 ...
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案
C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...
- MemoryMappedFile 内存映射文件 msdn
http://msdn.microsoft.com/zh-cn/library/dd997372%28v=vs.110%29.aspx 内存映射文件 .NET Framework 4.5 其他版本 1 ...
- C++中使用内存映射文件处理大文件
引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
JAVA类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段.本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原 ...
- 【VS开发】内存映射文件3
内存映射文件 内存映射文件,是由一个文件到一块内存的映射.Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping).内存映射文件与虚拟内存有些类似,通过内存映射文 ...
- 【NIO】NIO之浅谈内存映射文件原理与DirectMemory
Java类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段.本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原 ...
随机推荐
- rocketmq备忘
rocketmq unrecognized VM option 'MetaspaceSize=128m' => jdk1.8 JAVA_HOME https://blog.csdn.net/c3 ...
- LSTM参数和结构的本质理解——num_units参数/batch_size/cell计算
参考 ———— 图例讲解 https://blog.csdn.net/u014518506/article/details/80445283 理解:cell其实只有一个 : sequence leng ...
- Message NNNN not found; No message file for product=network, facility=TNS
Message NNNN not found; No message file for product=network, facility=TNS Table of Contents 1. 错误信息 ...
- 查看openstack各组件小版本号
查看api版本号 因为要判断openstack的某个小功能是否支持,需要确定api版本号大于某个版本,故需要查询现有环境api版本号 如查看cinder-api的版本号 指定api版本调api 在he ...
- PCL已有点类型介绍和增加自定义的点类型
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=265 本小节不仅解释如何增加你自己的PointT点类型,也介绍了PCL中的模 ...
- java.lang.RuntimeException: org.dom4j.DocumentException: 1 字节的 UTF-8 序列的字节 1 无效。
向一个XML文件写入出现异常 解决办法:使用记事本打开该XML文件,另存为,编码选择UTF-8 java.lang.RuntimeException: org.dom4j.DocumentExcept ...
- Asp.Net调用后台变量的三种写法
1.Asp.Net中几种相似的标记符号: < %=...%>< %#... %>< % %>< %@ %>解释及用法 答: < %#... %&g ...
- iOS模型输出和打印
在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的: person is <Person: 0x60800003 ...
- React Native细节知识点总结<一>
1.propTypes: static propTypes = { name:PropTypes.string, ID:PropTypes.number.isRequired, } 'isRequir ...
- 重点做EUR/USD、EUR/JPY、GBP/USD。
这三种货币对,几乎每天都有合适的行情.