1 小序
队列:先进先出数据结构.
2 Usage
2.1 常用方法
序号 | 方法 | 描述 |
---|---|---|
1 | Queue(maxsize=10) | 新建队列对象,maxsize队列数据个数,超过,则阻塞,直到数据被消费;若maxsize<=0,数据量不限个数 |
2 | put() | 数据进队列 |
3 | get() | 从队列取数据 |
4 | qsize() | 获取队列数据个数 |
5 | empty() | 判断队列是否有数据,若空,返回True |
6 | full() | 判断队列数据个数是否达到上限,若达到,返回True |
7 | join() | 阻塞调用进程,直到队列中所有数据被消费完 |
8 | task_done() | 队列数据消费结束,通知join执行后续操作 |
2.2 测试
2.2.1 put & get
from queue import Queue
datas_queue = Queue(maxsize=2)
datas_queue.put("hello")
# datas_queue.put("world")
datas = datas_queue.get()
print("data from queue: {}".format(datas))
- 结果
data from queue: hello
2.2.2 qsize
from queue import Queue
queue_datas = Queue(maxsize=10)
for i in range(10):
queue_datas.put(i)
queue_datas_size = queue_datas.qsize()
print("queue datas size: {}".format(queue_datas_size))
- 结果
queue datas size: 10
2.2.3 empty
from queue import Queue
queue_datas = Queue(maxsize=10)
queue_empty_temp1 = queue_datas.empty()
print("queue empty: {}".format(queue_empty_temp1))
queue_datas.put(1)
queue_empty_temp2 = queue_datas.empty()
print("queue empty: {}".format(queue_empty_temp2))
- 结果
queue empty: True
queue empty: False
2.2.4 full
from queue import Queue
queue_datas = Queue(maxsize=3)
for i in range(3):
queue_datas.put(i)
print("full: {}".format(queue_datas.full()))
- 结果
full: True
2.2.5 task_done & join
from queue import Queue
# https://www.jb51.net/article/139010.htm
queue_datas = Queue(maxsize=10)
for i in range(10):
queue_datas.put(i)
for i in range(10):
datas = queue_datas.get()
print("datas: {}".format(datas))
# 队列数据全部消费,通知join,执行后续操作
queue_datas.task_done()
queue_datas.join()
print("empty: {}".format(queue_datas.empty()))
queue_datas.put(250)
print("add data after join: {}".format(queue_datas.get()))
- 结果
datas: 0
datas: 1
datas: 2
datas: 3
datas: 4
datas: 5
datas: 6
datas: 7
datas: 8
datas: 9
empty: True
add data after join: 250
【参考文献】
[1]https://docs.python.org/3/library/queue.html
[2]https://www.jb51.net/article/139010.htm
[3]https://www.cnblogs.com/fuzzier/p/5978040.html