PythonStudy——线程中的几种消息队列

本文深入探讨了Python标准库中队列模块的使用,包括普通队列Queue、后进先出队列LifoQueue以及具备优先级的队列PriorityQueue的特性与应用。详细介绍了队列的put与get方法,以及如何通过设置参数实现阻塞与超时取值,同时展示了自定义类如何用于优先级队列中。

Queue

from queue import Queue,LifoQueue,PriorityQueue

# 队列模块 queue
# 类 Queue
# 类 LifoQueue
# 类 PriorityQueue

# 与进程中的JoinableQueue 使用方式完全一样 但是没有IPC

q = Queue()

# 放入元素  put 方法
q.put("123")
q.put("456")
q.put("789")

# 取出元素  get方法
# 方法一 (基础版取值)
print(q.get())
print(q.get())

# 方法二 (高级版取值)
# 设置阻塞选项block 默认为True  )
# 设置超时选项timeout 默认为None
# 如果在阻塞情况下超时取不到值,则抛出异常
# get(self, block=True, timeout=None)
print(q.get(block=True,timeout=1))

# 告知队列任务完成
q.task_done()
# 优先完成当前队列任务,完成不了阻塞
# q.join()
from queue import Queue,LifoQueue,PriorityQueue

# 队列模块 queue
# 类 Queue
# 类 LifoQueue
# 类 PriorityQueue

# 与进程中的JoinableQueue 使用方式完全一样 但是没有IPC

q = Queue()

# 放入元素  put 方法
q.put("123")
q.put("456")
q.put("789")

# 取出元素  get方法
# 方法一 (基础版取值)
print(q.get())
print(q.get())

# 方法二 (高级版取值)
# 设置阻塞选项block 默认为True  )
# 设置超时选项timeout 默认为None
# 如果在阻塞情况下超时取不到值,则抛出异常
# get(self, block=True, timeout=None)
print(q.get(block=True,timeout=1))

# 告知队列任务完成
q.task_done()
# 优先完成当前队列任务,完成不了阻塞
# q.join()

LifoQueue

from queue import LifoQueue

# last in first out
# 后进先出队列
# 先进后出 模拟堆栈
# 除了顺序以外 其他都一样
lifoqueue = LifoQueue()

lifoqueue.put("123")
lifoqueue.put("456")
lifoqueue.put("789")

print(lifoqueue.get())
print(lifoqueue.get())
print(lifoqueue.get())

PriorityQueue

from queue import PriorityQueue


# 具备优先级的队列
# 可以存储一个可以比较大小的对象
# 比较结果越小的优先级越高
# 自定义的对象,除非定义了__eq__方法,否则是无法进行比较的(不能使用比较运算符) 所以不能存储

# pq = PriorityQueue()
# pq.put("222")
# pq.put("111")
# pq.put("333")
# pq.put(34234)
# TypeError: '<' not supported between instances of 'int' and 'str'
# 需要保证存入优先队列内部的值是同一个类型

# print(pq.get())
# print(pq.get())
# print(pq.get())


# 类的比较运算模拟
class Aa(object):
    # 初始化
    def __init__(self, num):
        self.num = num

    # 小于运算 litter than
    def __lt__(self, other):
        return self.num < other.num, "小于"

    # 小于等于 litter equal
    def __le__(self, other):
        return self.num <= other.num,"小于等于"

    # 大于运算 greater than
    def __gt__(self, other):
        return self.num > other.num, "大于"

    # 大于等于 greater equal
    def __ge__(self, other):
        return self.num >= other.num,"大于等于"

    # 等于运算 equal
    def __eq__(self, other):
        return self.num == other.num,"等于"

    # 不等于 not equal
    def __ne__(self, other):
        return self.num != other.num,"不等于"

print(Aa(100) >= Aa(200))
print(Aa(100) <= Aa(200))
print(Aa(100) > Aa(200))
print(Aa(100) < Aa(200))
print(Aa(100) != Aa(200))
print(Aa(100) == Aa(200))
# (False, '大于等于')
# (True, '小于等于')
# (False, '大于')
# (True, '小于')
# (True, '不等于')
# (False, '等于')

 

转载于:https://www.cnblogs.com/tingguoguoyo/p/10990755.html

通过短时倒谱(Cepstrogram)计算进行时-倒频分析研究(Matlab代码实现)内容概要:本文主要介绍了一项关于短时倒谱(Cepstrogram)计算在时-倒频分析中的研究,并提供了相应的Matlab代码实现。通过短时倒谱分析方法,能够有效提取信号在时间与倒频率域的特征,适用于语音、机械振动、生物医学等领域的信号处理与故障诊断。文中阐述了倒谱分析的基本原理、短时倒谱的计算流程及其在实际工程中的应用价值,展示了如何利用Matlab进行时-倒频图的可视化与分析,帮助研究人员深入理解非平稳信号的周期性成分与谐波结构。; 适合人群:具备一定信号处理基础,熟悉Matlab编程,从事电子信息、机械工程、生物医学或通信等相关领域科研工作的研究生、工程师及科研人员。; 使用场景及目标:①掌握倒谱分析与短时倒谱的基本理论及其与傅里叶变换的关系;②学习如何用Matlab实现Cepstrogram并应用于实际信号的周期性特征提取与故障诊断;③为语音识别、机械设备状态监测、振动信号分析等研究提供技术支持与方法参考; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,先理解倒谱的基本概念再逐步实现短时倒谱分析,注意参数设置如窗长、重叠率等对结果的影响,同时可将该方法与其他时频分析方法(如STFT、小波变换)进行对比,以提升对信号特征的理解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值