import queue
q = queue.Queue(maxsize=3)
#创建一个队列的实例,该是对象的size是3
# q.get()
#从队列中获取值,如果队列中没有值,则会一直阻塞
# q.qsize()
#获取队列的size
# q.get(timeout=3)
#c从队列中获取值,如果获取不到值,则只等待3s,如果超过3则会报错
# queue.Empty
# q.get_nowait()的方法和q.get(timeout=3)一样的,如果拿不到会数据也会报一个queue.Empty的错
# queue.Empty
#可以传一个list到队列中,取出来的也是一个list
q.put(["a","b","c"])
data = q.get_nowait()
print(data,type(data))
# ['a', 'b', 'c']
#我们也可以把一个实例放在队列中
class foo(object):
def __init__(self,n):
self.n = n
f = foo(2)
q.put(f)
c = q.get_nowait()
print(c,type(c))
# <__main__.foo object at>
#判断队列是否满,队列中有3个数据,如果get了一个,则队列中的数据个数就为2了
print(q.full())
# False
print(q.qsize())
q.put("1")
q.put({"k1":"v1"})
q.put(["a","b","c"])
print(q.qsize())
# q.put("2222")
#如果队列满了,则put会一直put不进去,这里就会一直阻塞
# q.put("abc",timeout=2)
#如果队列满了,加一个timeout=2.则会等待2s,如果还放不进去则会报错“queue.Full”
# q.task_done()
# q.join()
# q.empty()
# 判断队列是否为空
q = queue.Queue()
#上面这个是创建一个先进先出的队列
q = queue.LifoQueue()
#这里是创建一个先进后出的队列
q= queue.PriorityQueue()
#创建一个可以设置优先级的队列,存数据的时候是要用tuple的个数传数据,优先级越小,就越会被提前取出来
q.put((1,["a","b","c"]))
q.put((2,"abc"))
print(q.get())
# (1, ['a', 'b', 'c'])