Python实现优先级队列

Python实现优先级队列,python,priority-queue,Python,Priority Queue,我试图在不使用队列模块的情况下创建优先级队列。我创建了一个类PriorityQueue(),并尝试创建一个mk函数,该函数不带任何参数,返回一个空队列,但似乎不知道如何返回。我的任务功能如下: class Task(): __slots__ = ('name', priority) def mkTask(myName, myPriority): t = Task() t.name = myName t.priority = myPriority ret

我试图在不使用队列模块的情况下创建优先级队列。我创建了一个类PriorityQueue(),并尝试创建一个mk函数,该函数不带任何参数,返回一个空队列,但似乎不知道如何返回。我的任务功能如下:

class Task():

    __slots__ = ('name', priority)

def mkTask(myName, myPriority):
    t = Task()
    t.name = myName
    t.priority = myPriority
    return t
到目前为止,我的PriorityQueue类和一个用于检查队列是否为空的函数的功能如下:

class PriorityQueue():
    def __init__(queue):
        queue.length = 0
        queue.first = None
        queue.last = None

def is_empty(queue):
    return(queue.length == 0)

我似乎不知道如何创建队列实例并将特定任务的元素插入队列。

优先级队列通常使用堆实现,下面就是这样的实现。注意,Python中的堆实现返回堆中最小的东西,因此我否定优先级,以便首先弹出优先级最高的东西

import heapq

class PriorityQueue:
    def __init__(self):
        self.items = []

    def push(self, priority, x):
        heapq.heappush(self.items, (-priority, x))

    def pop(self):
        _, x = heapq.heappop(self.items)
        return x

    def empty(self):
        return not self.items
这个和这个一样