码迷,mamicode.com
首页 > 编程语言 > 详细

7.3.9 - 并发多线程 - 线程queue

时间:2018-03-07 20:15:56      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:优先级队列   play   非阻塞   一个   lang   priority   c89   运行   tip   

一 线程queue

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

有三种不同的用法

1. class queue.Queue(maxsize=0) #队列:先进先出

技术分享图片
import queue  # 队列

q = queue.Queue(3)
q.put("first")
q.put(2)
q.put("three")
print(q.get())
print(q.get())
print(q.get())
先进先出
技术分享图片
first
2
three
运行结果

2. class queue.LifoQueue(maxsize=0) #堆栈:last in fisrt out

技术分享图片
import queue
q=queue.LifoQueue()
q.put(1)
q.put(2)
q.put(3)

print(q.get())
print(q.get())
print(q.get())
先进后出
技术分享图片
3
2
1
运行结果

3. class queue.PriorityQueue(maxsize=0) #优先级队列:存储数据时可设置优先级的队列

结果(数字越小优先级越高,优先级高的优先出队):#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
技术分享图片
import queue
q = queue.PriorityQueue(3)  # 优先级,越小优先级越大
q.put([10,one]) # first 优先级  second data
q.put([30,two]) # first 优先级  second data
q.put([20,three]) # first 优先级  second data
print(q.get())
print(q.get())
print(q.get())
优先级输出
技术分享图片
[10, one]
[20, three]
[30, two]
运行结果

Put方式是元组或者列表

技术分享图片
import queue
q = queue.PriorityQueue(3)  # 优先级,越小优先级越大
q.put((10,one)) # first 优先级  second data
q.put((30,two)) # first 优先级  second data
q.put((20,three)) # first 优先级  second data
print(q.get())
print(q.get())
print(q.get())
元组方式
技术分享图片
(10, one)
(20, three)
(30, two)
输出结果

 

其他参数,阻塞,和超时时间

技术分享图片
import queue
q=queue.Queue(3)
q.put(1)
q.put(2)
q.put(3) 
q.put(4,timeout=3)  # 阻塞,3秒后异常退出报,队列满了
阻塞和非阻塞

技术分享图片

技术分享图片
import queue
q=queue.Queue(3)
q.put(1)
q.put(2)
q.put(3)
q.put(4,block=True,timeout=3)
非阻塞

技术分享图片

q.get也一样。

 

查看队列是否满了后者空了

技术分享图片
import queue
q=queue.Queue(3)
q.put(1)
q.put(2)
q.put(3)
print(q.full())  # 查看队列是否满了
print(q.empty()) # 查看队列是否空了
print(q.get())
print(q.get())
print(q.get())
print(q.full())
print(q.empty())
查看队列是否满了或者空
技术分享图片
True
False
1
2
3
False
True
运行结果

 

7.3.9 - 并发多线程 - 线程queue

标签:优先级队列   play   非阻塞   一个   lang   priority   c89   运行   tip   

原文地址:https://www.cnblogs.com/caimengzhi/p/8524649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!