← retour aux snippets

weakref.WeakKeyDictionary: cache indexé par objets

Associer des valeurs à des objets sans empêcher leur GC (clés faibles).

python weakref #weakref#cache

objectif

Associer des valeurs à des objets sans empêcher leur GC (clés faibles).

code minimal

import weakref, gc
class Obj: pass
cache = weakref.WeakKeyDictionary()
o = Obj(); cache[o] = 42
refcount_before = len(cache)
del o; gc.collect()
print(len(cache) <= refcount_before)  # attendu: True (clé retirée après GC)

utilisation

import weakref
class Node: pass
w = weakref.WeakKeyDictionary()
n = Node(); w[n] = "meta"
print(w[n] == "meta")

variante(s) utile(s)

import weakref
print(hasattr(weakref, "WeakKeyDictionary"))

notes

  • Idéal pour attacher des métadonnées temporaires à des objets sans fuite mémoire.
  • Les entrées disparaissent automatiquement lorsque la clé n’est plus référencée.