首页 > 其他分享 >消息队列

消息队列

时间:2022-11-01 19:11:44浏览次数:35  
标签:pq join get 队列 消息 lq put

一、定义

消息队列是为了分配任务,避免大量的并发请求过多过快的消耗服务器资源,从而优化产品的性能,这样的话,多线程或者多进程,又或者协程等等都是可以达到优化的目的

二、类型

1、Queue:先进先出,后进后出

from queue import Queue()
#1、实例化Queue对象
q = Queue()
#2、存放数据
q.put(1)
q.put(2)
#3、取出数据
q.get() #1
q.get() #2
#如果存放两条数据,使用get方法取第三条数据,程序会阻塞
#q.get()
#没有数据是报错
#q.get_nowait()

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

from queue import LifoQueue

#1。实例化对象并指定队列长度
lq = LifoQueue(3)
lq.put(1)
lq.put(2)
lq.put(3)

lq.get()  #3
lq.get()  #2
lq.get()  #1

3、PriorityQueue:按照优先级顺序进行排序(默认从小到大)

from queue import PriorityQueue

#1、实例化对象
pq = PriorityQueue()
#2、存放数据
pq.put(1)
pq.put(9)
pq.put(7)
#取出数据
pq.get() #1
pq.get() #7
pq.get() #9

三、常用方法

put() #存放数据,如果超出队列长度,会阻塞
get() #取出数据,如果超出数据(没有数据),会阻塞
put_nowait() #存放数据,如果超出队列长度,会直接报错,不会阻塞
get_nowait()#取出数据,如果超出队列长度,会直接报错,不会阻塞
task_done() #结合join使用,如果用了join方法,必须要写task_done,用来通知join当前事件已完成,不写会发生阻塞
join() #直到queue队列中的所有事件都处理完毕,队列为空以后再执行join()之后的代码,如果用了join(),那就一定要写task_done()
qsize() #返回队列大小
q.empty() #判断队列是否为空,如果为空返回True,反之返回False
q.full() #判断队列数据是否存满,如果存满返回True,反之返回False
queue() #返回当前队列中的所有任务

 

标签:pq,join,get,队列,消息,lq,put
From: https://www.cnblogs.com/songyunjie/p/16848828.html

相关文章

  • 如何在EasyCVR平台配置AI智能识别的微信端告警消息推送?
    我们在此前的文章中和大家分享过关于EasyCVR视频融合平台智能告警相关的开发及功能介绍,其中包括微信端的开发流程分享,感兴趣的用户可以翻阅往期的文章进行了解。智能告警功......
  • 用栈实现队列
    classMyQueue{public:stack<int>stIn;stack<int>stOut;MyQueue(){}voidpush(intx){stIn.push(x);}//从......
  • 406.queue-reconstruction-by-height 根据身高重建队列
    问题描述406.根据身高重建队列解题思路首先根据身高对数组重新排序,再根据ki进行插入操作。排序时,需要对排序的比较方法重写,参见C++sort排序函数用法。同时,考虑到基于......
  • JS/TS数据结构---栈(单调栈)和队列
    一、栈栈(stack)是一种操作受限的线性表数据结构,基于后进先出(LIFO)策略的集合类型,例如函数中的临时变量符合后进先出的特性,因此用栈保存最合适。  在入栈和出栈过程中所需......
  • 游戏服务器架构:使用KCP 加速游戏消息,让全球玩家流畅联网
    定义      kcp协议是传输层的一个具有可靠性的传输层ARQ协议。     它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。     ......
  • unity3d:最简单的服务器,把收到消息发回客户端
    usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Net.Sockets;usingSystem.Net;usingSystem.Threading;usingSystem;usin......
  • [单片机框架] [queue] 实现一个简易的消息队列
    使用方法如下:#defineUSB_RECV_Q_ITEM_CNT8#defineUSB_RECV_Q_ITEM_SIZE(64+1)//用于usb消息队列总缓存区......
  • 队列与栈——数据结构与算法学习
    栈与队列队列队列的定义其实队列这个数据结构就是计算机模拟现实生活中的体现,就跟一个人排队一样,先排上就先走,拿最新很火的梨泰院的例子来说:走在前面的人就应该尽快出去......
  • RabbitMq消息的百分百投递
    RabbitMq消息的百分百投递​ 在RabbitMq作为消息中间件的时候,存在消息丢失的情况;在大部分业务中是不允许的;尤其是在使用中间件来保证数据的最终一致性时,消息丢失则无......
  • Kafka消息语义
    最多一次:消息最多被消费一次,可能丢失最少一次:消息最少被消费一次,可能被重复消费多次精确一次:消息会且只会被消费一次Producer默认语义默认情况下,Kafka会在producer的......