Python技巧积累

102 阅读1分钟

PriorityQueue

示例

class Job(object):
    def __init__(self, priority, description):
        self.priority = priority
        self.description = description
        print 'New job:', description
        return     
    def __cmp__(self, other):
        return cmp(self.priority, other.priority)
    
q = Queue.PriorityQueue()
q.put(Job(3,'Mid-level job'))
q.put(Job(10,'Low-level job'))
q.put(Job(1,'Important job'))

解释

import Queue

class ComparableObj:                  # 可比较对象,放入优先队列中
    def __init__(self, **):
        ...

    def __cmp__(self, other):         # 比较规则的指定,谁做根(大顶堆,小顶堆)
                                      # 返回的是布尔类型
        ...
        return True/Flase
        ...

que = Queue.PriorityQueue()

que.put(ComparableObj(**))
que.put(ComparableObj(**))
...

que.qsize()
                # 优先队列中元素的个数

que.get()
                # 返回根(优先队列第一个出队的元素)