weakrefモジュールの公式のPythonのドキュメントによると、「弱参照の主な用途は、大きなオブジェクトを保持するキャッシュまたはマッピングを実装することです。そこで、WeakValueDictionaryを使用して、長時間実行する関数のキャッシング・メカニズムを実装しました。しかし、キャッシュ内の値は、実際に再び使用されるまでそこにとどまることはありませんでしたが、ほとんど毎回再計算する必要がありました。 WeakValueDictionaryに格納されている値へのアクセスの間に強い参照がないため、GCはそれらを取り除きました(メモリに問題は全くありませんでしたが)。WeakValueDictionaryをキャッシュに使用するときのGCの問題
ここで、キャッシュを実装するために弱いリファレンスを使用することになっていますか? GCが弱い参照を削除しないように強い参照を明示的に保持すると、最初にWeakValueDictionaryを使用する点はありません。 GCには、メモリが不足している(または何らかのしきい値を超えている)場合にのみ、参照が全くないものと弱いもののすべてを削除するオプションがあるはずです。そんなことはありますか?あるいは、この種のキャッシュにはより良い戦略がありますか?