美文网首页
37.python 线程队列PriorityQueue(优先队列

37.python 线程队列PriorityQueue(优先队列

作者: 猿说编程 | 来源:发表于2020-01-08 21:03 被阅读0次

  在 线程队列Queue / 线程队列LifoQueue 文章中分别介绍了先进先出队列Queue先进后出队列LifoQueue,而今天给大家介绍的是最后一种:优先队列PriorityQueue,对队列中的数据按照优先级排序,那么具体怎么用呢?

一.队列Queue分类:

  1.线程队列Queue — FIFO(先进先出队列),即哪个数据先存入,取数据的时候先取哪个数据,同生活中的排队买东西;

  2.线程队列LifoQueue — LIFO(先进后出队列),即哪个数据最后存入的,取数据的时候先取,同生活中手枪的弹夹,子弹最后放入的先打出;

  3.线程队列PriorityQueue —PriorityQueue(优先级队列),即存入数据时候加入一个优先级,取数据的时候优先级最高的取出;

二.优先队列PriorityQueue简介

  在数据存入的时候设置优先级,取数据的时候默认按照优先级最高的取出,注意:使用优先级存数据取数据,队列中的数据必须是同一类型,举个栗子:班级成绩排名/身高排名……

  值得注意的是:在将数据存入到优先队列PriorityQueue时,设置的值越小,优先级越高;

三.优先队列PriorityQueue函数介绍

  函数不做过多介绍了,已经在 线程队列Queue 有了详细讲解,两者都属于Queue,函数都一样!

四.优先队列PriorityQueue使用

  按优先级:不管是数字、字母、列表、元组等(字典、集合没测),使用优先级存数据取数据,队列中的数据必须是同一类型,都是按照实际数据的ascii码表的顺序进行优先级匹配,汉字是按照unicode表。

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com

@File:python_priorityqueue.py
@Time:2019/11/29 1queue5:25

@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""

import queue
import threading
import time

q = queue.PriorityQueue()
q.put([1, 'ace'])
q.put([40, 333])
q.put([3, 'afd'])
q.put([5, '4asdg'])
# 1是级别最高的,
while not q.empty():  # 不为空时候执行
    print(q.get())



q = queue.PriorityQueue()
q.put('我')
q.put('你')
q.put('他')
q.put('她')
q.put('ta')
while not q.empty():
    print(q.get())

输出结果:

[1, 'ace']
[3, 'afd']
[5, '4asdg']
[40, 333]
ta
他
你
她
我

  由此可见:在将数据存入到优先队列PriorityQueue时,设置的值越小,优先级越高!

猜你喜欢:

  1.python线程队列Queue-FIFO

  2.python线程队列LifoQueue

  3.python线程互斥锁Lock

  4.python线程时间Event

  转载请注明猿说Python » python线程队列PriorityQueue(优先队列)


  技术交流、商务合作请直接联系博主,微信扫码或搜索:猿说python

python教程公众号

相关文章

  • 37.python 线程队列PriorityQueue(优先队列

      在 线程队列Queue / 线程队列LifoQueue 文章中分别介绍了先进先出队列Queue和先进后出队列L...

  • 死磕 java集合之PriorityQueue源码分析

    问题 (1)什么是优先级队列? (2)怎么实现一个优先级队列? (3)PriorityQueue是线程安全的吗? ...

  • webrtc MessageQueue 处理过程

    PriorityQueue dmsgq_;//优先队列 优先队列继承自 std::priority_queueDe...

  • 算法通关 - 优先队列

    优先队列(PriorityQueue) 优先队列也是队列的一种,它的特点: 不像队列按照先进先出来的。优先队列是正...

  • 【二】优先队列和堆

    堆 ----待补充--- java中的优先队列 PriorityQueue为java中的优先队列((a,b)->b...

  • java笔记

    [java优先队列PriorityQueue的使用] PriorityQueue弹出优先级最高的元素,优先级的比较...

  • PriorityQueue源码学习分析

    1.PriorityQueue简介 PriorityQueue是一个优先队列,和传统的队列相比,它不是先进先出,会...

  • 队列

    什么是Java优先级队列(Priority Queue)? 考察点:队列参考回答: PriorityQueue是一...

  • Java8 PriorityQueue 源码解析

    PriorityQueue 优先级队列 前世今生 extends AbstractQueueAbstractQue...

  • 优先队列 priorityQueue

    优先队列有两种实现方式:线性表和二叉树的堆实现。 线性表有顺序表和链表的实现,但是无论如何都会有一个o(n)的操作...

网友评论

      本文标题:37.python 线程队列PriorityQueue(优先队列

      本文链接:https://www.haomeiwen.com/subject/zffeactx.html