队列:
  • Python的Queue模块中提供了同步的、线程安全的队列类,包括:FIFO(先入先出)队列、QueueLIFO(后入先出)队列LifoQueue、优先级队列PriorityQueue,这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。
  • 初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限
队列的方法:
from queue import Queue, LifoQueue, PriorityQueue

# 实例化一个队列对象
que = Queue(2)

# ----------往队列中添加数据------------------
que.put('123')
que.put('121')
# put方法添加数据,如果队列已满,会堵塞程序的执行(进入等待状态)
# que.put('3333')
# block=False 表示不等待
# que.put('121', block=False)
# timeout:设置等待的时间
# que.put(11, timeout=2)
# put_nowait():添加数据不等待
# que.put_nowait(111)

# --------------从队列中获取数据----------------
# print(que.get())
# print(que.get())
# get方法获取数据,如果队列队列为空,会堵塞程序的执行(进入等待状态)
# block=False 表示不等待,timeout:设置等待的时间
# print(que.get())
# get_nowait():添获取数据不等待
# print(que.get_nowait())


# ------------队列状态获取的方法-----------
# 1、qsize():获取队列中数据的数量
print(que.qsize())
# 2、full():判断队列是否已满
print(que.full())
# 3、empty():判断队列是否为空
print(que.empty())
q = Queue()
# 往队列中添加两条数据(任务)
q.put(111)
q.put(222)

# 获取队列中的数据
print(q.get())
print(q.get())

# 调用task_done方法通知队列,任务执行完毕(每调用一次,意思就是执行完一个任务)
q.task_done()
q.task_done()

print('-----1-------------')
# join():等待队列中的任务全部执行完毕
q.join()
print('-----2------------')
1、FIFO(先入先出)队列Queue
2、LIFO(后入先出)队列LifoQueue
3、优先级队列PriorityQueue