• 技术文章 >Python技术 >Python基础教程

    python中Queue和pipe的差别

    小妮浅浅小妮浅浅2021-05-13 09:55:36原创3562

    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
    品易云
    上一篇:python进程的交流方式 下一篇:python中re有哪些常用函数

    相关文章推荐

    • python中sys模块怎么用?• python实现异步的两种框架• python异步中selectors的使用• python多线程中join的应用场景• python进程池的使用注意• python多进程与多线程的简单区分• python进程的交流方式

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网