queue

队列(queue)特点是先进先出(First in First out)。


引入和创建

import queue

q = queue.Queue()

常用方法

queue.qsize() 返回队列的大小

queue.empty() 如果队列为空,返回True,反之False

queue.full() 如果队列满了,返回True,反之False

queue.full 与 maxsize 大小对应

queue.get([block[, timeout]])获取队列,timeout等待时间

queue.get_nowait() 相当queue.get(False)

queue.put(item) 写入队列,timeout等待时间

queue.put_nowait(item) 相当queue.put(item, False)

queue.task_done() 在完成一项工作之后,queue.task_done()函数向任务已经完成的队列发送一个信号

queue.join() 实际上意味着等到队列为空,再执行别的操作

# 入队,在队列尾增加数据, block参数,可以是True和False 意思是如果队列已经满了则阻塞在这里,

# timeout 参数 是指超时时间,如果被阻塞了那最多阻塞的时间,如果时间超过了则报错。

q.put(13,block=True,timeout=5)

q.task_done()意味着之前入队的一个任务已经完成。由队列的消费者线程调用。每一个get()调用得到一个任务,接下来的task_done()调用告诉队列该任务已经处理完毕。如果当前一个join()正在阻塞,它将在队列中的所有任务都处理完时恢复执行(即每一个由put()调用入队的任务都有一个对应的task_done()调用)。

优先队列

怎么出的规则不和进入的顺序有关,是和他的优先级有关,当入队的时候我们就会根据这个数据的优先级进行排序,优先级高的就排在前面,然后出队的时候就是先出队。

例:

import queue

q=queue.PriorityQueue(4)

双向队列:

两端都可以进同时也可以出

例:

import queue

q=queue.deque(3)

# 初始化一个双向队列

q.append(12)

# 右边进

q.pop()

# 右边出

q.appendleft(34)

# 左边进

q.popleft()

# 左边出

你可能感兴趣的:(queue)