队列的基本知识:
队列为:先进先出[FIFO]
队列 (queue) 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,
和栈一样,队列是一种操作受限制的线性表。
进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列数据结构包含的功能有:
队列是否为空 is_empty()
往队尾添加一个元素 enqueue(elem)
将队头的元素删除,并返回这个元素的值 dequeue
查看队头 peek()打印队列 print_queue()
queue队列
- 创建 queue队列对象
q = multiprocessing.Queue(3) # 3表示只能存放3个数据
参数 :maxsize是队列中允许的大项数。如果省略此参数,则无大小限制。
返回值q 是队列对象 - put()方法 ,向队列中存放数据。如果队列已满,此方法将阻塞至有空间可用为止。
- get()返回q中的一个项目。如果q为空,此方法将阻塞,直到队列中有项目可用为止。
- get_nowait(): 不等待,直接抛出异常
- full()如果q已满,返回为True
- q.empty() 如果调用此方法时 q为空,返回True。
代码实现:
from multiprocessing import Queue
import multiprocessing
#1.创建一个队列对象
q=multiprocessing.Queue(3)
#参数maxsize是队列中允许最大项数,如果忽略此参数,则无大小限制
#2.put方法,向队列里放数据
q.put("hello")
q.put(123)
q.put([1,2,3])
# q.get()
# q.put("python")
#get方法,获取数据
# print(q.get_nowait())
print(q.get())
print(q.get())
print(q.get())
# print(q.get())
# print("---------------------")
#3.qsize(),获取队列长度(队列中的数据数量)
print("队列中有多少数据",q.qsize())
#4.full()判断队列中是否存满了
print(q.full())
#5.empty()判断队列中的数据是否空了,True表示空了
print(q.empty())
运行结果:
hello
123
[1, 2, 3]
队列中有多少数据 0
False
True