向队列里添加数据。
item:要放入队列的数据。
block:可选参数,默认值为True。当值为True时,阻塞调用(当栈满一直无空间可用,阻塞调用,直到有栈有空间,或timeout秒后结束。
timeout:阻塞超时,当timeout>0时,阻塞调用timeout后结束。
将队列数据取出。
block:可选参数,默认值为True。当值为True时,阻塞调用(当试图向空栈取出数据时,阻塞调用,直到有栈内有数据,或timeout秒后结束。
timeout:阻塞超时,当timeout>0时,阻塞调用timeout后结束。
判断队列是否为空,空返回True,非空返回False
判断队列是否为满,满返回True,非满返回False
阻塞调用线程,直到队列的所有任务都被处理掉。
只要数据加入队列,未完成的任务数就会增加。当消费者线程调用task_done(),未完成的任务数九会减少。当未完成的任务数降至0,join()解除阻塞。
意味着上一个任务处理完成,由队列的消费者线程调用。每一个get()的调用获得一个任务,task_done()调用告诉队列对应的任务已经完成。
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
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