Python 3.6.4 queue模块

常用方法

 

put(item[, block[, timeout]])

向队列里添加数据

参数

item:要放入队列的数据。

block:可选参数,默认值为True。当值为True时,阻塞调用(当栈满一直无空间可用,阻塞调用,直到有栈有空间,或timeout秒后结束。

timeout:阻塞超时,当timeout>0时,阻塞调用timeout后结束。

 

get(block[, timeout])

将队列数据取出。

参数

block:可选参数,默认值为True。当值为True时,阻塞调用(当试图向空栈取出数据时,阻塞调用,直到有栈内有数据,或timeout秒后结束。

timeout:阻塞超时,当timeout>0时,阻塞调用timeout后结束。

 

empty()

判断队列是否为空,空返回True,非空返回False

 

full()

判断队列是否为满,满返回True,非满返回False

 

join()

阻塞调用线程,直到队列的所有任务都被处理掉。

只要数据加入队列,未完成的任务数就会增加。当消费者线程调用task_done(),未完成的任务数九会减少。当未完成的任务数降至0,join()解除阻塞。

 

task_done()

意味着上一个任务处理完成,由队列的消费者线程调用。每一个get()的调用获得一个任务,task_done()调用告诉队列对应的任务已经完成。

 

FIFO队列(First In First Out)

queue.Queue(maxsize=0)

先进先出队列,当maxsize>0时,队列数据大小限制为maxsize,当maxsize<=0时,大小无限制。

代码:

import queue

q=queue.Queue()

for each in range(5):
	q.put(each)
	
while not q.empty():
	print(q.get())

结果:

0
1
2
3
4

 

LIFO队列(Last In First Out)

 

queue.LifoQueue(maxsize=0)

后进先出队列,当maxsize>0时,队列数据大小限制为maxsize,当maxsize<=0时,大小无限制。

代码:

import queue

q=queue.LifoQueue()

for each in range(5):
	q.put(each)
	
while not q.empty():
	print(q.get())

结果:

4
3
2
1
0

 

优先级队列

queue.PriorityQueue(maxsize=0)

优先级队列,当maxsize>0时,队列数据大小限制为maxsize,当maxsize<=0时,大小无限制。

代码:

import queue

class job():
	def __init__(self,priority,description):
		self.priority=priority
		self.description=description
		
	def __lt__(self,other):
		return self.priority<other.priority
		
q=queue.PriorityQueue()
		
		
q.put(job(10,"priority 10"))
q.put(job(4,"priority 4"))
q.put(job(3,"priority 3"))
q.put(job(1,"priority 1"))

while not q.empty():
	print(q.get().description)

结果:

priority 1
priority 3
priority 4
priority 10

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值