2016-12-21 24 views
0

私は上下に研究しましたが、私はかなり理解しているとは思わないので、私自身の質問を投稿すると思っていました。Python 2.7ページトリップ間の辞書の辞書

WindowsでホストされるPython 2.7上でWebアプリケーションを構築します(特にweb2pyでも、私は信じられません)。

私はデータベーステーブルに約2000項目のリストを持っています。 ユーザーは最初にすべての2000項目をPythonに選択し、そのリストをユーザーのブラウザに戻すアプリケーションを開きます。その後、ユーザーはアイテムの一対多属性の一対多値に基づいてリストをフィルタリングします。

私は、Pythonがユーザのフィルタリングオプションの変更の間にメモリ内の2000項目の純粋なリストを保持したいと考えています。

  • ユーザーが自分のフィルタオプションを変更するたびに

  • 旅行バックのPythonへの変更、
  • は、インメモリリストと
  • リターンユーザーのブラウザにサブセットにフィルタを適用します。

これは、フィルタオプションが変更されるたびにデータベースにヒットしないようにするためです。また、繰り返しセッション中にリストを渡すのを避けるために。

これのほとんどは、私はうまくいっています。私があなたにアドバイスを求めているのは、Pythonにリストをメモリ内に保持させる方法です。 C#では、静的オブジェクトにするだけです。

Pythonでどのように静的(またはその他のスキームが適用されますか)を行うにはどうしますか?

ご挨拶ありがとうございます。


これを校正しながら、私はおそらくブラウザで全体のリストを管理しますので、私はおそらくまだとにかく前後にリストの少なくとも大部分を渡している参照してください。

しかし、私はまだあなたの提案を聞いています。おそらくあなたが言うことが助けになるでしょう。

+0

web2pyの 'session'に格納することは、「Pythonメモリ」に格納することとは異なると思いますか?それらは私にとっては同じように思えますし、web2pyの 'session'が何のためのものなのか正確です。 –

+0

それは同じことですか? 2000年のリスト全体が、フィルタリングされたリストとともに、すべてのページ旅行でサーバーブラウザーサーバーを通過するのではないでしょうか? – Steve

+0

はい、それはHTTPの性質なので、ステートレスなので、すべてのリクエスト/レスポンスとともにオブジェクトを渡す必要があります。あなたはmemcachedを使って見ることができますが、それはあなたの状況のた​​めに過度のように思えます。 –

答えて

1

あなたが結論しているように、サーバーがブラウザにまだ保持されていない新しいデータを生成していないということを考えると、サーバーへの要求を前後に送信する理由はあまりありません。すべてのフィルタリングをブラウザで直接実行してください。

サーバ上で何らかの操作を行う必要があったとしても、データベースに問い合わせるのではなく、Pythonで大きなデータセットを検索/フィルタする方が効率的であるとは必ずしも言えません。より効率的なものと、コードに複雑さを追加するという面倒な作業がどれだけ効率的であるかを理解するために、いくつかのテストを行う必要があります。