【文件属性】:
文件名称:循环引用数据结构的内存管理-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2021-06-11 11:14:02
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):