多线程-线程queue
queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.
进程queue:用于进程之间共享数据,因为多个进程内存空间是隔离的。
线程queue:可以不用关心锁的问题
三种用法:
队列 Queue:先进先出
import queue
q = queue.Queue(3) # 先进先出(队列)
q.put("first")
q.put(2)
q.put("third")
# q.put("四") # 如果放的时候超过了队列大小就会卡住,放不进去,因为有个默认参数 block=True, 表示满了就阻塞,False的话就不卡主,直接抛异常
# q.put("四",block=True, timeout=3) # 如果3秒后还没有人拿走一个值,就抛异常
print(q.get())
print(q.get())
print(q.get())
# print(q.get()) # 如果取的时候超过了队列大小也会卡住,原因和put时原因一样
# q.get(block=False) 等同于 q.get_nowait()
运行输出:
first 2 third
堆栈 LifoQueue:后进先出
import queue
q = queue.LifoQueue(3) # 后进先出(堆栈)
q.put("first")
q.put(2)
q.put("third")
print(q.get())
print(q.get())
print(q.get())
运行输出:
third 2 first
优先级队列 PriorityQueue:数字越小优先级越高
import queue
q = queue.PriorityQueue(3) # 优先级队列
q.put((10, "one")) # 元组形式,数字越小优先级越高
q.put((40, "two"))
q.put(((30, "three")))
print(q.get())
print(q.get())
print(q.get())
运行输出:
(10, 'one') (30, 'three') (40, 'two')
共有 0 条评论