• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python数据结构之优先级队列queue用法详解

    一、基本用法

    Queue类实现了一个基本的先进先出容器。使用put()将元素增加到这个序列的一端,使用get()从另一端删除。具体代码如下所示:

    import queue
    
    q = queue.Queue()
    
    for i in range(1, 10):
        q.put(i)
    while not q.empty():
        print(q.get(), end="  ")

    运行之后,效果如下:

    这里我们依次添加1到10到队列中,因为先进先出,所以出来的顺序也与添加的顺序相同。

    二、LIFO队列

    既然有先进先出队列queue,那么数据结构中肯定也有后进先出的队列。后进先出的队列为:LifoQueue,示例如下:

    import queue
    
    q = queue.LifoQueue()
    
    for i in range(1, 10):
        q.put(i)
    while not q.empty():
        print(q.get(), end="  ")

    运行之后,效果如下:

    三、优先队列

    在操作系统中,我们常常会根据优先级来处理任务,比如系统的优先级最高,我们肯定优先处理系统任务,然后才处理用户的任务。同样,queue库给我们提供了PriorityQueue来处理优先级的队列。

    示例如下:

    import queue
    import threading
    
    
    class Job:
        def __init__(self, priority, desc):
            self.priority = priority
            self.desc = desc
            print("New Job:", desc)
            return
    
        def __eq__(self, other):
            try:
                return self.priority == other.priority
            except AttributeError:
                return NotImplemented
    
        def __lt__(self, other):
            try:
                return self.priority > other.priority
            except AttributeError:
                return NotImplemented
    
    
    def process_Job(q):
        while True:
            next_job = q.get()
            print(next_job.desc)
            q.task_done()
    
    
    q = queue.PriorityQueue()
    
    q.put(Job(5, "Five Job"))
    q.put(Job(15, "Fifteen Job"))
    q.put(Job(1, "One Job"))
    
    workers = [
        threading.Thread(target=process_Job, args=(q,)),
        threading.Thread(target=process_Job, args=(q,)),
    ]
    
    for work in workers:
        work.setDaemon(True)
        work.start()
    
    q.join()
    

    运行之后,效果如下:

    这里,我们默认数值越大优先级越高,可以看到15先执行,然后再是5,1任务。这个例子展现了有多个线程在处理任务时,要根据get()时队列中元素的优先级来处理。

    到此这篇关于Python数据结构之优先级队列queue用法详解的文章就介绍到这了,更多相关Python队列queue 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python 数据结构之树的概念详解
    • python三种数据结构及13种创建方法总结
    • python数据结构的排序算法
    • Python内置数据结构列表与元组示例详解
    • Python二进制数据结构Struct的具体使用
    • python用sqlacodegen根据已有数据库(表)结构生成对应SQLAlchemy模型
    • Python数据结构之图的存储结构详解
    • Python数据结构之二叉排序树的定义、查找、插入、构造、删除
    • 详解python数据结构之栈stack
    • Python数据结构详细
    上一篇:Python GUI之如何使用tkinter控件
    下一篇:Python基础之模块相关知识总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python数据结构之优先级队列queue用法详解 Python,数据结构,之,优先级,