import Queue
class Job(object):
def __init__(self, priority, description):
self.priority = priority
self.description = description
def __cmp__(self,other):
return cmp(self.priority, other.priority)
" cmp"的需要是什么?功能?
从名称来看,似乎是将优先级与其他优先级进行比较。
答案 0 :(得分:1)
根据Priority Queue docs,在优先级队列中,"首先检索最低值的条目(最低值条目是按排序(列表(条目))返回的条目[0 ])"
通过为__cmp__
对象定义Job
函数,随时使用这些Job对象运行sort
或sorted
(或类似函数),系统知道排序必须基于这些对象的.priority
属性。
因此,当这些作业的使用者试图从优先级队列中获取作业时,队列将向其传递具有最低.priority
值的作业。如果没有__cmp__
定义,作业的顺序将是任意的(我认为在CPython中它将根据每个对象的内存位置结束,这可能没有明显的顺序)。