一、队列
queue队列:使用import queue
,用法与进程Queue一样
实际上这里就是Python解释器中的一种数据结构中的类型——队列
这里直接使用队列也可以。
如果还要类似计数器的功能可以加上task_done和join
- FIFO 先进先出
- LIFO 后进先出
- 优先级队列
二、先进先出(FIFO)
class queue.Queue(maxsize=0)
### 普通队列
q = queue.Queue()
### 没有计数器进行阻塞 FIFO
q.put("first")
q.put("second")
q.put("third")
print(q.get())
print(q.get())
print(q.get())
知识兔### 普通队列q = queue.Queue()### 加了计数器进行阻塞的队列 FIFOq.put(1) # +1q.put(2) # +1q.put(3) # +1print(q.get())q.task_done() # -1print(q.get())q.task_done() # -1print(q.get())q.task_done() # -1q.join() # 判断计数器是否为0,不为零则会阻塞
三、后进先出
class queue.LifoQueue(maxsize=0)
### 栈q = queue.LifoQueue()### 没有计数器进行阻塞 LIFOq.put(1) # +1q.put(2) # +1q.put(3) # +1print(q.get())print(q.get())print(q.get())
### 栈q = queue.LifoQueue()### 加了计数器进行阻塞的队列 LIFOq.put(1) # +1q.put(2) # +1q.put(3) # +1print(q.get())q.task_done() # -1print(q.get())q.task_done() # -1print(q.get())q.task_done() # -1q.join() # 判断计数器是否为0,不为零则会阻塞
四、优先级队列
class queue.PriorityQueue(maxsize=0)
数字越小优先级越高
### 设置优先级的队列q = queue.PriorityQueue()# put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高q.put((20,'a'))q.put((10,'b'))q.put((30,'c'))print(q.get())print(q.get())print(q.get())# 数字越小优先级越高