Python3-queue模块-同步队列
2024-09-01 19:52:48
Python3中的queue模块实现多生产者,多消费者队列,特别适用于多个线程间的信息的安全交换,主要有三个类
queue.Queue(maxsize=0)
构造一个FIFO(先进先出)的队列
queue.LifoQueue(maxsize=0)
构造一个LIFO(后进先出)的队列
queue.PriorityQueue(maxsize=0)
构造一个具有优先级的队列,存储的是一个元组(n, value),n为数字代表优先级,数字越小,级别越高
这个模块定义了两个异常
queue.Empty
如果队列中为空,继续调用非阻塞的get_nowait()会抛出异常
queue.Full
如果队列已满,继续调用非阻塞的put_nowait()会抛出异常
import queue
# 以下三个队列都可以设置最大长度maxsize,默认是无限大
print("-------------queue.Queue----------------")
# 线程消息队列,FIFO(先进先出)
q = queue.Queue()
q.put("one")
q.put("two")
q.put("three")
print(q.get())
print(q.get())
print(q.get())
# print(q.get(timeout=3)) # 队列中没有数据,会阻塞 print("-------------queue.LifoQueue----------------")
# 线程消息队列,LIFO(后进先出)
lq = queue.LifoQueue()
lq.put("one")
lq.put("two")
lq.put("three")
print(lq.get())
print(lq.get())
print(lq.get()) print("-------------queue.PriorityQueue----------------")
# 线程消息队列,PriorityQueue(优先级的队列:数字越小优先级越高)
pq = queue.PriorityQueue()
pq.put((1, "Jet"))
pq.put((3, "Jack"))
pq.put((2, "Judy"))
print(pq.get())
print(pq.get())
print(pq.get())
参考资料
http://python.usyiyi.cn/translate/python_352/library/queue.html
最新文章
- mysql 常用函数整理
- swift相关
- Azure Automation (2) 定期删除存储账号中的文件
- hdu 5818 (优先队列) Joint Stacks
- Java [Leetcode 94]Binary Tree Inorder Traversal
- bzoj3171
- syslog_test.c 简单的syslog函数
- Qml 写的弹出层控件(13篇博客)
- PhpStrom如何安装主题?(总结三种不同格式安装方法)
- Android View的滑动
- fscanf_s与scanf_s的宽度参数与缓冲区参数分析
- nginx http2 push 试用
- Change default network name (ens33) to old “eth0” on Ubuntu 18.04 / Ubuntu 16.04
- Spring框架中IoC(控制反转)的原理(转)
- Java Web知识梳理
- 转载 intellij IDEA 使用体验 (本人感觉它的使用是一种趋势)
- 智能家居入门DIY——【二、LD3320之语音识别】
- hibernate一对多多对一双向
- Spring学习(二)-----eclipse新建spring项目
- SQL select查询原理--查询语句执行原则<;转>;
热门文章
- C#线程 基本同步
- C语言 俄罗斯方块demo
- Spring相关面试题-整理
- (String),toString(),String.valueOf()
- 【Hadoop】mapreduce环形缓冲区
- JAVASE(十六) IO流 :File类、节点流、缓冲流、转换流、编码集、对象流
- Java实现蓝桥杯第八届决赛 对局匹配
- (Java实现) 洛谷 P1091合唱队形
- Java实现 LeetCode 530 二叉搜索树的最小绝对差(遍历树)
- Java实现 蓝桥杯VIP 算法训练 数位分离