在python中获取对象跳过队列时使用队列的问题

在python中获取对象跳过队列时使用队列的问题,python,multithreading,queue,blocking,Python,Multithreading,Queue,Blocking,现在我正在实现一个线程,它将基本上充当消费者。将有一个FIFO队列,该队列将被其他线程填充。问题是我想添加一个特殊条件,它会导致项目完全跳过队列 def EventThread (threading.Thread): def __init__ (self, counter_object): super (EventThread, self).__init__ () self.queue = Queue.Queue () self.prior

现在我正在实现一个线程,它将基本上充当消费者。将有一个FIFO队列,该队列将被其他线程填充。问题是我想添加一个特殊条件,它会导致项目完全跳过队列

def EventThread (threading.Thread):
    def __init__ (self, counter_object):
        super (EventThread, self).__init__ ()
        self.queue = Queue.Queue ()
        self.priority = threading.Event ()
        self.item = None
        self.counter = counter.object

    def add_to_queue (self, item):
        self.queue.put (item)

    def do_priority (self, item)
        self.item = item
        self.priority.set ()
        # do something here to block until priority goes back

    def run (self):
        while True:
            # Wait for open event slots
            if not self.counter.has_slots ():
                time.sleep (self.counter.next_slot ())

            # Block until queue has something
            item = self.queue.get (True)

            # If priority is set we need to do that first
            if self.priority.is_set ():
                 do_something_special (self.item)
                 self.priority.clear ()
            else:
                 do_something (item)

            # first if priority was set we lost the object
            # second the thread blocks until the queue has an object, doesn't
            # metter if priority has been set
这只是一些伪代码来详细说明我的观点。但正如你所看到的,这里有一些大问题。不需要担心计数器,只有这个线程访问它

这里我真正需要的是某种方法来阻止线程,直到优先级项目切换或队列获得项目为止。我对多线程相当陌生,所以我不知道有任何对象适合我的需要,也不知道有任何技巧可以实现这一点


非常感谢任何能提供帮助的人。

你看过吗?

这似乎是我需要的一部分,描述很模糊,所以我先浏览了一下。但是我需要do_priority函数来阻止,直到列表中的第一项被删除。