11

(モジュールからの)キューがあり、そのキューへのQueueインデックス付きアクセスを取得したいと思います。(つまり、キューからアイテム番号4を削除せずに、キュー内のアイテム番号4を要求できるようになります。)

キューが内部でdequeを使用し、dequeがインデックス付きアクセスを持っていることを確認しました。問題は、(1)キューを台無しにすることなく、(2)スレッドセーフを壊すことなく、どのように両端キューを使用できるかということです。

4

1 に答える 1

13
import Queue

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

もちろん、インデックス作成が成功するか、IndexErrorが発生するかにかかわらず、ミューテックスを解放することは重要であり、私はそのためのwithステートメントを使用しています。古いPythonバージョンでは、try/finallyが同じ効果で使用されていました。

于 2009-08-18T14:39:19.283 に答える