获取对Python队列的索引访问的最佳方法,线程安全

时间:2009-08-18 13:45:32

标签: python multithreading queue deque

我有一个队列(来自Queue模块),我希望获得索引访问权限。 (即,能够在队列中请求第4项,而不将其从队列中删除。)

我看到一个队列在内部使用deque,而deque已经为索引访问了。问题是,如何在没有(1)弄乱队列的情况下使用双端队列,(2)破坏线程安全性。

1 个答案:

答案 0 :(得分:11)

import Queue

class IndexableQueue(Queue):
  def __getitem__(self, index):
    with self.mutex:
      return self.queue[index]

释放互斥锁当然至关重要的是索引是成功还是引发IndexError,而我正在使用with语句。在较旧的Python版本中,try / finally将用于相同的效果。