2012-01-19 9 views
3

複数のフィールド要素をキューに追加することで、ねじれフレームワークを使用してアプリケーションを設計したいと思っています。sqliteでソートされた並行キュー実装(ねじれ)?

キューは、他の遅延によってアプリケーションによって消費されます。問題は、追加の順序ではなく、要素フィールドの内容に基づいていくつかの要素を優先順位を高くしてキュー要素を消費したいということです。

私の現在の(おそらく間違った)考え方は、適切な優先順位で結果セットを生成し、この結果を反復して遅延を生成するSQL Selectを実行するジェネレータを持つことでした。問題は、ジェネレータが結果セットを反復処理している間に、遅延要素によって追加の要素がキューに追加されている可能性があることです。

ジェネレータが呼び出されるたびに新しい選択を実行せずにこれを行う方法はありますか?私。 「結果セット」とイテレーター・カーソルは自動的に「更新」されますか?

そうでない場合は、これをどのように実装しますか?

答えて

2

キューモジュールはあなたを満たすことがPriorityQueueクラスを持っています

+0

ありがとうございます。 PriorityQueueは私が探していたものです。 – ARF

1

なぜ、Pythonリストを使用して、stdlibのモジュール "heapq"を使用して優先順位を保つべきですか? (あなたのリストの要素は、(優先度、time_of_insertion、objects)を持つタプルになります。データは通常のPythonリストに保持されているので、ねじれたアプリ内で問題なしで渡すことができます。

sqliteのを使用するよりも、あなたが必要とするすべては優先順位によってソートされた場合

(この答えでは、私は助けることができるheapqの使用例置く: heapq with custom compare predicateを)。

+0

私はこれを下落したはずがないと思います。合理的な答え。 –