7.3.9 - 并发多线程 - 线程queue

Posted 如果迎着风就飞,俯瞰这世界有多美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.3.9 - 并发多线程 - 线程queue相关的知识,希望对你有一定的参考价值。

一 线程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的主要内容,如果未能解决你的问题,请参考以下文章

python 多线程并发threading & 任务队列Queue

python多线程限制并发数示例

多线程

iOS开发多线程--(NSOperation/Queue)

7.2.6 - 并发多线程 队列

python多线程并发数量控制