Python程序中的线程操作-队列

一、队列

queue队列:使用import queue,用法与进程Queue一样

实际上这里就是Python解释器中的一种数据结构中的类型——队列

这里直接使用队列也可以。
如果还要类似计数器的功能可以加上task_done和join

  1. FIFO 先进先出
  2. LIFO 后进先出
  3. 优先级队列

二、先进先出(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()

### 加了计数器进行阻塞的队列  FIFO
q.put(1)    # +1
q.put(2)    # +1
q.put(3)    # +1

print(q.get())
q.task_done()   # -1
print(q.get())
q.task_done()   # -1
print(q.get())
q.task_done()   # -1
q.join()    # 判断计数器是否为0,不为零则会阻塞

三、后进先出

class queue.LifoQueue(maxsize=0)

### 栈
q = queue.LifoQueue()

### 没有计数器进行阻塞  LIFO
q.put(1)    # +1
q.put(2)    # +1
q.put(3)    # +1

print(q.get())
print(q.get())
print(q.get())
### 栈
q = queue.LifoQueue()

### 加了计数器进行阻塞的队列  LIFO
q.put(1)    # +1
q.put(2)    # +1
q.put(3)    # +1

print(q.get())
q.task_done()   # -1
print(q.get())
q.task_done()   # -1
print(q.get())
q.task_done()   # -1
q.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())
# 数字越小优先级越高
原文地址:https://www.cnblogs.com/XuChengNotes/p/11552846.html