首页 » 编程 » Python-7.并发编程 » 正文

多线程-线程queue

queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.

进程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

 

堆栈:后进先出

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

 

优先级队列:数字越小优先级越高

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')

 

 

发表评论

*