queue队列

1 基本理解

  Queue是一个在内存中,元素带顺序的容器。

  解耦:数据待处理线程把数据交给队列,不需要关心处理者是谁。处理者从队列中拿数据处理,不和待处理线程接触。

  效率:数据待处理线程把数据交给队列,然后继续自己的工作。处理者可以多线程并发处理。

  和列表的区别:队列中的数据取出就会消失。列表不会。

2 Queue()

class queue.Queue() 创建先入先出的实例

import  queue

q = queue.Queue()
q.put('d1')
q.put('d2')
print(q.qsize())
q.get()
q.get()
q.get(block=True,timeout=4)
>>
2
    raise Empty
queue.Empty
#创建队列实例,put两个数据,获取列队长度,get数据。
#get方法默认阻塞,超时为None,qsize为0时持续阻塞。
#get不到数据,超时后,抛出一个队列空的异常
import  queue
q = queue.Queue(maxsize=5)
q.put('d1',timeout=4)
q.put('d1',timeout=4)
q.put('d1',timeout=4)
q.put('d1',timeout=4)
q.put('d1',timeout=4)

q.put('d1',timeout=4)
>>
    raise Full
queue.Full
#创建队列实例时设定了size,然后put方法中设定了timeout,size满了,put超时,就抛出队列满的异常

  

3 class queue.LifoQueue

last in first out

import  queue

q = queue.LifoQueue()
q.put('d1')
q.put('d2')
print(q.qsize())
print(q.get())
print(q.get())
>>
2
d2
d1

  

猜你喜欢

转载自www.cnblogs.com/jabbok/p/9104935.html