2017-11-10 5 views
0

私はゆっくりと動作するpythonプログラムを持っています。プロセスのキャッシュを増やすために@lru_cache(maxsize = 2056)デコレータを使用してキャッシュを追加しましたが、私のコードを実行すると、私のプログラムの消費メモリはタスクマネージャ(2GBではなく)で260MBになります。それは高いキャッシュを許可しないウィンドウ10の制限ですか? eclipse luna + pydevを使用してコードを実行します。私のpythonのバージョンは3.5です。lru_cacheを使ったWindows 10でのPythonキャッシング

+0

なぜ、2606だけが必要な場合、キャッシュは2056MBを割り当てるべきですか?これは、キャッシュが超過してはならない最大サイズです。 –

+0

はい、多分それが理由です。私のコードの速度はincresedではありませんが、このコードは別のシステムでわずか2分で実行されます – Atena

+0

無関係の提案。 maxsize = 2^x(xは正の整数)であることを確認してください。 maxsizeが2の累乗である場合、lru_cacheの方がはるかに優れています(しかし、正確な理由は分かりません)。 – Frogboxe

答えて

0

これはWindows 10の制限ではありません。 @lru_cacheのパラメータは、キャッシュする内容に応じてメモリに保存される関数の最大数を示します。キャッシュのサイズは異なります。

したがって、最新の2056件のコールを異なるパラメータでキャッシュしています。ドキュメントによると

https://docs.python.org/3/library/functools.html#functools.lru_cache

If maxsize is set to None, the LRU feature is disabled and the cache can grow without bound. The LRU feature performs best when maxsize is a power-of-two.

これは、キャッシュメモリ内のすべての異なる機能の呼び出しが保存されます。

0

ありがとうございます。あなたが正しいです。私は自分の仕事マネージャーをもう一度チェックした。消費されたメモリはPythonのために考慮され、私の日食は考慮されません。今は1GB以上です。これはWindows 10の制限ではありません。

関連する問題