从队列中间删除项目?

时间:2011-11-18 18:20:24

标签: python multithreading queue

是否有可能删除一个项目并让多线程队列在Python中重新排序?

我让用户在队列中排队,但是当需要处理用户时,如果用户断开连接,则会引发问题。

有办法做到这一点吗?

由于

1 个答案:

答案 0 :(得分:3)

Queue个对象不提供随机访问。但是,您可以通过在其他位置保留对队列中对象的引用并将其标记为陈旧来实现相同的目标。当从队列中读取对象时,消费者可以检查该对象是否陈旧,如果是,则将其丢弃并再次阅读。

您也可以在PriorityQueue类中找到值,您可以将(priority, message)而不是message放入队列,而priority值最低的数据是总是下一个从队列中读取。这本身并不能解决您的问题,但它可能会为您提供一种方法来确定最旧请求的优先级等。