python中Queue和pipe的差别

美女程序员鼓励师

1、区别

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

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

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

(3)Queue的封装比较好,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学习指路:python基础教程

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

以上是 python中Queue和pipe的差别 的全部内容, 来源链接: utcz.com/z/543668.html

回到顶部