一、FIFO队列(先进先出)
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = ‘zhoufeng‘ #FIFO队列 import queue q=queue.Queue(3) #定义一个3位置的队列 #使用put方法往队列中添加元素,需要考虑是否能放下的问题 #如果放不下了,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=5) #可以使用block=False设置不阻塞立即报错 q.put(11) q.put(22) q.put(33) print(q.empty()) #判断队列是否为空,如果为空返回False,不为空返回True print(q.qsize()) #输出队列中元素个数 q.put(44,block=True,timeout=5) #使用get方法从队列中取数据,需要考虑是否有数据可取的问题 #如果无数据可取,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=2) #可以使用block=False设置不阻塞立即报错 print(q.get()) print(q.get()) print(q.get()) print(q.get(block=True,timeout=2)) #另外还有join与task_done方法,这两个方法是成对使用的 #join方法用于阻塞进程不继续往下执行,当队列中任务执行完后,不再阻塞 #解释器怎样知道队列中任务执行完了呢?通过task_done方法显式告诉解释器某个任务已经执行完毕 que=queue.Queue(3) #定义一个3位置的队列对象 que.put(11) que.put(22) que.put(33) que.get() que.task_done() #告诉解释器上一个任务已经执行完毕 que.get() que.task_done() #告诉解释器上一个任务已经执行完毕 que.join()
二、栈(后进先出)
使用queue.LifoQueue()生成栈
三、优先级队列
使用queue.PriorityQueue()生成优先级队列
四、双向队列
使用queue.deque()生成双向队列
时间: 2024-11-08 23:11:07