pythonQueue和pipe的差别
python中Queue和pipe的差别
1、区别
(1)Queue使用putget维护队列,pipe使用sendrecv维护队列。
(2)pipe只提供两个端点,而Queue没有限制。
这意味着在使用Pipe时,只能同时启动两个进程。一个生产者和一个消费者在这两个端点上操作(由pipe()返回的两个值),这两个端点一起维护一个队列。如果多个进程同时在管道的同一个端点上操作,就会出现错误(因为没有锁,类似于线程不安全)。因此,两个端点相当于只为流程提供两个安全操作位置,从而将流程数量限制为只有2个。
(3)Queue的封装比较好,Queue只提供一个结果,可以被多个进程同时调用;Pipe()返回两个结果,分别由两个进程调用。
(4)Queue的实现基于pipe,所以pipe的运行速度比Queue快很多
(5)当只需要两个进程时,管道更快,当需要多个进程同时操作队列时,使用队列。
2、实例
importrandom
importtime
frommultiprocessingimportProcess,Pipe,current_process
defproduce(conn):
whileTrue:
new=random.randint(0,100)
print('{}produce{}'.format(current_process().name,new))
conn.send(new)
time.sleep(random.random())
defconsume(conn):
whileTrue:
print('{}consume{}'.format(current_process().name,conn.recv()))time.sleep(random.random())
if__name__=='__main__':
pipe=Pipe()
p1=Process(target=produce,args=(pipe[0],))
p2=Process(target=consume,args=(pipe[1],))
p1.start()
p2.start()
以上就是python中Queue和pipe的差别,希望能对大家有所帮助。更多Python学习教程请关注IT培训机构:千锋教育。
相关推荐HOT
更多>>为什么Python适合作为第一个学习的编程语言?
Python语言设计的初衷就是容易上手。作为一门基础语言,融会贯通后,有助于学习其他语言,例如PHP,Perl,Ruby等。可以快速架起抽象的程序世界...详情>>
2023-11-08 17:48:07Python 网络编程
python提供了两个级别访问的网络服务:低级别的网络服务支持基本的Socket,它提供了标准的BSDSocketsAPI,可以访问底层操作系统Socket接口的全...详情>>
2023-11-08 16:50:33pythonOrderedDict在python字典的实现
OrderedDict在python字典的实现1、OrderedDict的popitem方法这个类型在添加键的时候会保持顺序,因此键的迭代次序总是一致的。OrderedDict的pop...详情>>
2023-11-08 15:37:46python日志库的模块化方法
python日志库的模块化方法1、模块化方法日志库采用模块化方法,并提供几类组件:记录器(loggers),处理器(handlers),过滤器(filters)和格式化...详情>>
2023-11-08 14:45:39