1、区别
(1)Queue使用 putget维护队列 ,pipe使用 send recv维护队列 。
(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学习指路:Python基础教程
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)