首页 > 编程语言 >21python实现简单的消息队列

21python实现简单的消息队列

时间:2023-09-24 20:44:29浏览次数:42  
标签:队列 Queue 消息 timeout 简单 put block 21python

 

 

from multiprocessing import Queue
'''
q=Queue(num)若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接收的消息数量没有上限(直到内存的尽头)。函数也是队列的初始化。
Queue.qsize()    返回当前队列包含的消息数量。
Queue.empty()    如果队列为空,返回 True,否则返回 False。
Queue.full()    如果队列满了,返回 True,否则返回 False。
Queue.get([block[, timeout]])    获取队列中的一条消息,然后将其从队列中移除,block 默认值为 True。如果 block 使用默认值,且没有设置 timeout(单位:秒),消息队列为空,
此时程序将被阻塞(停在读取状态),直到从消息队列读到消息为止,如果设置了 timeout,则会等待 timeout 秒,若还没有读取到任何消息,则抛出 Queue.Empty 异常。
Queue.get_nowait()    相当于 Queue.get(False)。
Queue.put(item, [block[, timeout]])    将 item 消息写入队列,block 默认值为 True。如果 block 使用默认值,且没有设置 timeout(单位:秒),
消息队列如果已经没有空间可写入,此时程序将被阻塞(停在写入状态),直到从消息队列腾出空间为止,如果设置了 timeout,则会等待 timeout 秒,若还没有空间,则抛出 Queue.full 异常。
Queue.put_nowait(item)    相当于 Queue.put(item, False)。
'''
if __name__ == '__main__':
    # 初始化一个Queue对象,最多可接收3条信息,也就是可以put 3条消息
    q = Queue(3)
    q.put('消息1')
    q.put('消息2')
    q.put('消息3')
    # 已经put满了3条消息,如果还要q.put() 程序将会阻塞等待,消息被拿出。

    # 判断消息是否为空,再读取;为空返回True,不为空返回False.
    if not q.empty():
        print('----从消息队列中获取消息--')
        # qszie()函数获取队列的消息个数
        for i in range(q.qsize()):
            # 按照先进先出的原则读取消息
            print(q.get())

 

标签:队列,Queue,消息,timeout,简单,put,block,21python
From: https://www.cnblogs.com/chenzhi2023/p/17726620.html

相关文章

  • 多线程实现实例-简单的聊天小程序TCP编程尝试
    运用TCP编程,实现一个从客户端到服务端多线程聊天的功能。 获取信息线程的代码Get.javapackagecom.xyq.HW;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.Socket;publicclassGetextendsThread{......
  • TiDB的简单介绍以及进行资源限制的方式与方法
    TiDB的简单介绍以及进行资源限制的方式与方法TiDB的简介TiDB是一个分布式数据库,简介为:TiDB是一个开源的分布式关系型数据库,它兼具了分布式数据库的水平扩展性和传统关系型数据库的ACID事务特性。TiDB最初由PingCAP公司开发,并于2015年开源发布。创始人自己开发发......
  • 6. 简单基因家族分析
    2023.09.241.任务背景  芝麻是一种油料作物.产油比其他作物高很多,这里以基因的背景来研究芝麻产油的原因.这里我们专门研究FAD4基因,它在油脂合成中也起到重要作用.我们对比不同作物的FAD4基因的拷贝数,研究它对产油的影响.  下图是我们要得出的结论,我们发现FAD4在拟南......
  • 【POJ 3253】Fence Repair 题解(贪心算法+优先队列+哈夫曼树)
    农夫约翰想修理牧场周围的一小段围栏。他测量了围栏,发现他需要N(1≤N≤20000)块木板,每块木板都有一定的整数长度Li(1≤Li≤50000)单位。然后,他购买了一块长度刚好足以锯入N块木板的长木板(即,其长度为Li长度的总和)。FJ忽略了“切口”,即锯切时锯屑损失的额外长度;你也应该忽略它。FJ伤心地......
  • Oracle process/session/cursor/tx/tm的简单学习
    Oracleprocess/session/cursor/tx/tm的简单学习Oracle的部署模式Oracle安装时有专用模式和共享模式的区别共享模式(Sharedmode):在共享模式下,会话可以同时读取数据库的数据,多个会话可以并发地进行读取操作。这意味着多个会话可以共享相同的数据快照,并且彼此之间不会阻塞。......
  • 78.一个简单的存储过程
    delimiter$$createtabletest.t3(idintnotnullprimarykey,namevarchar(20));truncatetablet3;dropprocedureifexistsdata;createproceduredata(iniint)beginwhilei<100000doinsertintotest.t3values(i,'菠萝');......
  • 开发一个简单的swift 包
    swift对于包包含了比较严格的访问控制,套路上与rust比较类似,一般开发的项目都是自己项目的代码,以及引用别人开发好的包,但是很多时候可能会有自己开发包共享别人的场景简单包可以直接使用swift的cli创建,或者手工代码结构 ├──Package.swift└──Sour......
  • 消息队列中,如何保证消息的顺序性?
    本文选自:advanced-java作者:yanglbme问:如何保证消息的顺序性?面试官心理分析其实这个也是用MQ的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个mysqlbinlog同步的系统,压......
  • 消息队列中,如何保证消息的顺序性?
    本文选自:advanced-java作者:yanglbme问:如何保证消息的顺序性?面试官心理分析其实这个也是用MQ的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个mysqlbinlog同步......
  • redis消息队列——发布订阅
    一、相关依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><grou......