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

结果:

priority 1
priority 3
priority 4
priority 10

 

 

 

 

 

 

 

你可能感兴趣的:(python)