python - Weakref not getting deleted in REPL even after manual gc collection -
i seeing issue when executing below code in repl, after manually doing gc.collect() can still see weakref object. see below
[67]: weakref import weakvaluedictionary class a: def __init__(self): self.val = 1 = a() w = weakvaluedictionary() w['k1'] = dict(w) out[72]: {'k1': <__main__.a @ 0x1e59e9b84a8>} del gc.collect() out[74]: 239 dict(w) out[75]: {'k1': <__main__.a @ 0x1e59e9b84a8>} ideally weakref should cleared once strong ref has been deleted , manual gc has been done, why still seeing this.
it looks like using ipython. described in the docs, ipython stores each output in numbered global variable. there global variable _72 holds reference dict(w) (the value output in out[72]), of course contains strong refence object formerly known a.
Comments
Post a Comment