python中Queue和pipe的差别
- 更新时间:2021-06-18 10:24:53
- 编辑:郭宏大
给网友朋友们带来一篇相关的编程文章,网友傅同济根据主题投稿了本篇教程内容,涉及到Python相关内容,已被104网友关注,相关难点技巧可以阅读下方的电子资料。
参考资料
- 《Python数据科学:技术详解与商业实践》源代码文件 配套资源 / 32.2 MB / 常国珍 赵仁乾 张秋剑 推荐度:
- Python数据分析实战 PDF 电子书 / 52.7 MB / 内利(Fabio Nelli) 推荐度:
- Python自动化运维:技术与最佳实践 PDF 电子书 / 150.4 MB / 刘天斯 推荐度:
- 《Python自动化测试入门与进阶实战》源代码 配套资源 / 126 MB / 唐文 推荐度:
- 自学python教程视频 / 116 KB / 码小辫 推荐度:
正文内容
这是一篇很好的python技术文章,代码实例很详细,改了一下错误代码,为了方便大家的阅读。
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学习指路:
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
相关教程
-
python 实现syslog 服务器的详细过程
这篇文章主要介绍了python 实现syslog服务器的详细过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2019-07-23
-
Python2和Python3之间有什么区别
Python 2和Python 3之间存在以下几个方面的主要区别:1、输出(print)的不同;2、整数除法,返回值的不同;3、列表理解循环变量方面;4、Unicode字符串方面;5、错误处理方面;6、xrange方面;
发布时间:2019-07-11