知行编程网知行编程网  2022-10-18 04:30 知行编程网 隐藏边栏  16 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中Queue和pipe的差别的相关知识,包括python pipe 推流,以及python pipe这些编程知识,希望对大家有参考作用。

python中Queue和管道的区别


1、区别

(1)Queue使用 putget维护队列 ,pipe使用 send recv维护队列 。

(2)pipe只提供两个端点,而Queue没有限制。

这意味着在使用 Pipe 时,只能同时启动两个进程。一个生产者和一个消费者对这两个端点(pipe()返回的两个值)进行操作,共同维护一个队列。如果多个进程同时在管道的同一个端点上操作,就会发生错误(因为没有锁,类似于线程不安全)。因此,两个端点相当于只为进程提供了两个安全的运行位置,从而将进程的数量限制为只有 2 个。

(3)Queue的封装性较好。队列只提供一个结果,可以被多个进程同时调用; Pipe() 返回两个结果,分别被两个进程调用。

(4)Queue的实现基于pipe,所以pipe的运行速度比Queue快很多

(5) 管道在只需要两个进程时速度更快,而队列在需要多个进程同时对队列进行操作时使用。


2、实例

import random
import time
from multiprocessing import Process, Pipe, current_process
def produce(conn):    
while True:        
new = random.randint(0, 100)        
print('{} produce {}'.format(current_process().name, new))        
conn.send(new)        
time.sleep(random.random())
def consume(conn):    
while True:        
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学习指路:


本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享