文件名称:循环引用数据结构的内存管理-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2024-07-01 05:00:42
Python cookbook 中文 参考
8.23 循环引用数据结构的内存管理 问题 你的程序创建了很多循环引用数据结构(比如树、图、观察者模式等),你碰到 了内存管理难题。 解决方案 一个简单的循环引用数据结构例子就是一个树形结构,双亲节点有指针指向孩 子节点,孩子节点又返回来指向双亲节点。 这种情况下,可以考虑使用 weakref 库中的弱引用。例如: import weakref class Node: def __init__(self, value): self.value = value self._parent = None self.children = [] def __repr__(self): return 'Node({!r:})'.format(self.value) # property that manages the parent as a weak- reference @property def parent(self): return None if self._parent is None else self._parent() @parent.setter def parent(self, node):