Python中queue消息队列模块

from queue import Queue
from queue import PriorityQueue

print("Queue类实现了一个基本的先进先出(FIFO)容器,使用put()将元素添加到序列尾端,get()从队列尾部移除元素。\n")

q = Queue()

for i in range(3):
    q.put(i)

while not q.empty():
    print(q.get())

print("与标准FIFO实现Queue不同的是,LifoQueue使用后进先出序(会关联一个栈数据结构)。\n")

from queue import LifoQueue

q1 = LifoQueue()

for i in range(3):
    q1.put(i)

while not q1.empty():
    print(q1.get())

print("除了按元素入列顺序外,有时需要根据队列中元素的特性来决定元素的处理顺序。例如,老板的打印任务可能比研发的打印任务优先级更高。PriorityQueue依据队列中内容的排序顺序(sort order)来决定那个元素将被检索。")

class Job(object):
    def __init__(self, priority, description):
        self.priority = priority
        self.description = description
        print(‘New job:‘, description)
        return

    def __lt__(self, other):
        return self.priority < other.priority

q2 = PriorityQueue()

q2.put(Job(5, ‘Mid-level job‘))
q2.put(Job(10, ‘Low-level job‘))
q2.put(Job(1, ‘Important job‘))  # 数字越小,优先级越高

while not q2.empty():
    next_job = q2.get()  # 可根据优先级取序列
    print(‘Processing job‘, next_job.description)

原文地址:https://www.cnblogs.com/john-xiong/p/11778345.html

时间: 2024-11-09 02:10:50

Python中queue消息队列模块的相关文章

自动化运维Python系列之消息队列RabbitMQ

RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco .Redhat.iMatix 等联合制定了 AMQP 的

python中的堆排序peapq模块

heapq模块实现了python中的堆排序,并提供了有关方法.让用Python实现排序算法有了简单快捷的方式. heapq的官方文档和源码:8.4.heapq-Heap queue algorithm 下面通过举例的方式说明heapq的应用方法 实现堆排序 #! /usr/bin/evn python #coding:utf-8 from heapq import * def heapsort(iterable): h = [] for value in iterable: heappush(h

UCOS中的消息队列并不是真正意义上的队列

UCOS中的消息队列并不是真正意义上的队列,它只是发送了想要发送数据的指针,这个时候,如果发送多个同一个变量的不同数据,那么数据就相当于被覆盖了. 解决办法: 定义一个缓存数组buffer[i]; 更改变量i的数值,就可以实现一个变相的FIFO,因为每次发送的变量的指针是不同的. i++; i %= bufsize; buffer[ ( i + bufsize - 1 ) % bufsize ]; //此处是取的上一个数据,当前数据直接取buffer[i]即可.

在python中扩展c语言模块

有一个以前写的c语言代码,我想把它用在python程序中.我先是看了<python基础教程>一书中的方法,书中说可以用swig加python内置distutils模块的方法来实现.我照着书上的步骤试了试,结果在导入模块的时候总是提示"ImportError: dynamic module does not define init function (initprintf)".起初我以为是so文件没有放对位置.但是我试着在目录中建立了一个简单的python模块,然后再导入,发

python中根据字符串导入模块module

python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlib modname = 'datetime' datetime_module = importlib.import_module(modname) print(datetime_module) # <module 'datetime' from 'C:\\Users\\huchengyue\\AppData\\Local\\Programs\\Pyth

python中time、datetime模块的使用

目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1.前言 如果您从事过python web的开发,那一定有过这样的经历,对于各种复杂繁琐的业务逻辑,掺杂着各种各样的时间约束,让人很容易搞的头晕眼花,比如展示出一天内用户进行过的所有操作记录,再比如进行验证码验证时获取当前时间与验证码生成时间进行比较,检查是否超过10分钟过期时间之类.这些关于时间的业

python—多进程的消息队列

消息队列 消息队列是在消息的传输过程中保存消息的容器 消息队列最经典的用法就是消费者 和生产者之间通过消息管道传递消息,消费者和生成者是不同的进程.生产者往管道写消息,消费者从管道中读消息 操作系统提供了很多机制来实现进程间的通信,multiprocessing模块提供了Queue和Pipe两种方法来实现 一.使用multiprocessing里面的Queue来实现消息队列 q = Queue q.put(data) data = q.get() 例子: from multiprocessing

Python 番外 消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面.过程中我们会参考这些成熟消息队列的很多重要思想.本文首先会阐述什么时候你需要一个消

Linux中的消息队列

消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先进先出.消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限的( MSGMAX),每个消息队列的总的字节数是有上限的( MSGMNB),系统上消息队列的总数也有一个上限( MSGMNI). 消息队列是用链表实现的. 1.创建新消息队列或取得已存在消息队列 原型: int msgget(key_t key, int msgflg); 参数:key:可以认为是一个端口号,也可以由函数ftok生成.msgflg:IPC_C