Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 检查优先级队列中是否已有内容_Python 2.7_Priority Queue - Fatal编程技术网

Python 2.7 检查优先级队列中是否已有内容

Python 2.7 检查优先级队列中是否已有内容,python-2.7,priority-queue,Python 2.7,Priority Queue,我想知道是否有任何方法可以通过它们的uuu散列和uuu ep_uu检查对象是否已经在优先级队列中。我必须用Python 2.7编写代码。下面是一个应打印foo的示例代码: 这是有漏洞的,不能保证在不同的python实现/版本中工作 PriorityQueue的内容保存在它的队列成员(一个普通列表)中。因此,您可以使用中测试项目是否存在。由于队列通常用于多线程/处理环境,因此您可能还希望使用其互斥体成员进行锁定: 这是列表中的线性查找,对项使用==运算符__hash_uuu不被使用。这是一种黑客行

我想知道是否有任何方法可以通过它们的uuu散列和uuu ep_uu检查对象是否已经在优先级队列中。我必须用Python 2.7编写代码。下面是一个应打印foo的示例代码:

这是有漏洞的,不能保证在不同的python实现/版本中工作

PriorityQueue的内容保存在它的队列成员(一个普通列表)中。因此,您可以使用中测试项目是否存在。由于队列通常用于多线程/处理环境,因此您可能还希望使用其互斥体成员进行锁定:

这是列表中的线性查找,对项使用==运算符__hash_uuu不被使用。

这是一种黑客行为,不能保证在不同的python实现/版本中工作

PriorityQueue的内容保存在它的队列成员(一个普通列表)中。因此,您可以使用中测试项目是否存在。由于队列通常用于多线程/处理环境,因此您可能还希望使用其互斥体成员进行锁定:

这是列表中的线性查找,对项使用==运算符__未使用哈希值

import Queue

class Job(object):
    def __init__(self, fpriority, spriority, iata , hops, cost):
        self.fpriority = fpriority
        self.spriority = spriority
        self.iata = iata
        self.hops = hops
        self.cost = cost

    def __eq__(self,other):
        return (self.fpriority == other.fpriority and self.spriority == other.spriority and self.iata == other.iata)

    def __hash__(self):
        return hash((self.fpriority , self.spriority , self.iata))    

    def __cmp__(self, other):
        if self.fpriority > other.fpriority:
            return 1
        elif self.fpriority < other.fpriority:
            return -1
        else:
            if self.spriority > other.spriority:
                return 1
            elif self.spriority < other.spriority:
                return -1
            else:
                return 0

q = Queue.PriorityQueue()
q.put(Job(153153, 0,  'b', 1 , 1))
q.put(Job(145, 2,  'a', 1 , 1))
k = Job(145, 2,  'a', 1 , 1)

for l in q:
    if k == l:
        print "foo"
def is_in_queue(x, q):
   with q.mutex:
      return x in q.queue