博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发编程之队列
阅读量:5334 次
发布时间:2019-06-15

本文共 1309 字,大约阅读时间需要 4 分钟。

目录

队列:

from queue import Queue,LifoQueue,PriorityQueue

以上三种队列有什么不同?

1. Queue 与 joinableQueue类似

2. LifoQueue(栈,特点:后进先出)

from queue import Queue,LifoQueue,PriorityQueuea = LifoQueue()     # 后进先出,栈。跟对列相比,仅是取得顺序不同a.put(1)a.put(2)a.put(3)print(a.get())print(a.get())print(a.get())
321

3. PriorityQueue(具备优先级的队列)

第1阶段:数字小优先级越高(进队列会排序:从小到大)
from queue import Queue,LifoQueue,PriorityQueueq = PriorityQueue() # 具备优先级的队列,取数据时,值越小,优先级越高q.put(1)q.put(3)q.put(2)print(q.get())print(q.get())print(q.get())# 比较两个元组中的数据b  = (1,2,3,4,5)c = (0.9,2,3,4)d = (5,1,4,5)q.put(b)q.put(c)q.put(d)print(q.get())print(q.get())print(q.get())
123(0.9, 2, 3, 4)(1, 2, 3, 4, 5)(5, 1, 4, 5)
第2阶段:两个类如何比较(运算符重载,重写父类的“比较大小”的方法)

需求:比较两个人的年龄,从小到大排序;如果年龄相等,则按照姓名排序。

from queue import PriorityQueue# 定义类class person():    def __init__(self,name,age):        self.name = name        self.age = age        # 重写运算符。即运算符重载    def __lt__(self, other):        if self.age == other.age:            return self.name < other.name        return self.age < other.age# 创建队列q = PriorityQueue()p1 = person('ack',18)p2 = person('boo',18)p3 = person("hehe",17)q.put(p1)   # ack  18q.put(p2)   # boo   18q.put(p3)   # hehe  17print(q.get().name)print(q.get().name)print(q.get().name)
heheackboo

运算符重载即 重写运算符方法。

转载于:https://www.cnblogs.com/plf-Jack/p/11153094.html

你可能感兴趣的文章
Android Studio的git功能的使用介绍
查看>>
【转载】Vim查找替换及正则表达式的使用
查看>>
u3D大场景的优化
查看>>
CodeForces 180C Letter
查看>>
[原]SQL相关路径查询脚本
查看>>
【进程线程与同步】5.3 创建与联接线程
查看>>
判断两个字符串是否相等【JAVA】
查看>>
解决jQuery的$符号的冲突问题
查看>>
使用Javascript Ajax 通信操作JSON数据 [下]
查看>>
永久重定向
查看>>
2.1
查看>>
python_根据"词库"进行“词联想”
查看>>
JSP九大内置对象及其作用和四大作用域详解
查看>>
C++封装库
查看>>
C# 使用 SmtpClient 发送邮件注意项
查看>>
C#多线程学习(五) 多线程的自动管理(定时器)
查看>>
Hadoop产生背景
查看>>
NOIP2011 观光公交 加强版
查看>>
Android WebView使用基础
查看>>
在一个非套接字上尝试了一个操作 解决方法
查看>>