博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 中的queue 与多进程--待继续
阅读量:4625 次
发布时间:2019-06-09

本文共 1225 字,大约阅读时间需要 4 分钟。

一、先说说Queue(队列对象)

Queue是中的标准库,可以直接import 引用,之前学习的时候有听过著名的“先吃先拉”与“后吃先吐”,其实就是这里说的队列,队列的构造的时候可以定义它的容量,别吃撑了,吃多了,就会报错,构造的时候不写或者写个小于1的数则表示无限多

import Queue

q = Queue.Queue(10)

向队列中放值(put)

q.put(‘yang’)

q.put(4)

q.put([‘yan’,’xing’])

在队列中取值get()

默认的队列是先进先出的

>>> q.get()  'yang'  >>> q.get()  4  >>> q.get()  ['yan', 'xing']  >>>

 

当一个队列为空的时候如果再用get取则会堵塞,所以取队列的时候一般是用到

get_nowait()方法,这种方法在向一个空队列取值的时候会抛一个Empty异常

所以更常用的方法是先判断一个队列是否为空,如果不为空则取值

队列中常用的方法

Queue.qsize() 返回队列的大小   Queue.empty() 如果队列为空,返回True,反之False   Queue.full() 如果队列满了,返回True,反之False  Queue.get([block[, timeout]]) 获取队列,timeout等待时间   Queue.get_nowait() 相当Queue.get(False)  非阻塞 Queue.put(item) 写入队列,timeout等待时间   Queue.put_nowait(item) 相当Queue.put(item, False)

 

二。 Python multiprocessing.Queue() 和 Queue有区别吗??

答案1: 有区别。Queue.Queue是进程内非阻塞队列,multiprocess.Queue是跨进程通信队列。多进程前者是各自私有,后者是各子进程共有。

答案2:

1.)from Queue import Queue 这个是普通的队列模式,类似于普通列表,先进先出模式,get方法会阻塞请求,直到有数据get出来为止

2.)from multiprocessing.Queue import Queue 这个是多进程并发的Queue队列,用于解决多进程间的通信问题。普通Queue实现不了。例如来跑多进程对一批IP列表进行运算,运算后的结果都存到Queue队列里面,这个就必须使用multiprocessing提供的Queue来实现

作者:人间各种胸器 链接:https://www.zhihu.com/question/30459454/answer/104842081 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

转载于:https://www.cnblogs.com/momo8238/p/7357754.html

你可能感兴趣的文章
mybatis中if标签判断字符串相等问题
查看>>
20190411课堂作业<MYSQL语句四十五题>
查看>>
.NET单元测试
查看>>
hihocoder 1441
查看>>
Flask构建微电影(一)
查看>>
xml对象的序列化和反序列化
查看>>
BZOJ 4805: 欧拉函数求和 杜教筛
查看>>
代理模式
查看>>
(转)数据库连接池的理解和使用
查看>>
Ohana Cleans Up
查看>>
java 位数补0处理
查看>>
机器学习工程师 - Udacity 强化学习 Part Seven
查看>>
Python 字典
查看>>
Docker终极指南:为什么Docker能做这么多事
查看>>
Servlet接收数组参数,后台批量更新的例子
查看>>
硬件截图
查看>>
小甲鱼Python第三讲课后习题
查看>>
laravel中引入composer安装在vendor中的第三方组件
查看>>
java.util.zip.ZipException: invalid entry size
查看>>
IIS Appcmd Tool
查看>>