二进制堆优先级队列
bhpq的Python项目详细描述
bhpq-二进制堆优先级队列
二进制堆优先级队列实现,线程安全
安装
您可以从PyPI:
安装bhpqpip install bhpq
python 3.7支持bhpq
用法
from bhpq import BinaryHeapPriorityQueue
# The BinaryHeapPriorityQueue constructor takes two input params:
# - prefer (required param)
# the preferred object is pushed to the top of the queue
# the prefer input is a lambda function eg:
# prefer=(lambda lhs, rhs: lhs if lhs.val >= rhs.val else rhs)
# - size
# The initial size allocation of the queue, default value is 10
示例
class Node(object):
def __init__(self, val):
self.val = val
A = BinaryHeapPriorityQueue(
prefer=(lambda lhs, rhs: lhs if lhs.val >= rhs.val else rhs), size=5
)
A.add(Node(1))
A.add(Node(4))
A.add(Node(3))
A.add(Node(5))
A.add(Node(2))
assert 5 == A.pop().val
assert 4 == A.pop().val
assert 3 == A.pop().val
assert 2 == A.pop().val
assert 1 == A.pop().val
assert None == A.pop()
方法
size()
返回优先级队列的当前大小
peek()
返回优先级队列顶部的对象,如果存在,则返回No.<
pop()
如果存在优先级,则移除并返回优先级队列顶部的对象,否则返回NO/
add(val)
将元素添加到优先级队列