这分为两个问题。我还想说,这些问题纯粹是出于好奇
问题1
检索基于节点的集合的内存的方法是什么?即,节点链占用多少内存?如果要查找列表占用的内存量,请使用:
import sys
sys.getsizeof([])
当我在我的collection类上使用相同的命令时(见下文),sys.getsizeof(DoublyLinkedBag())
,它给我一个值56。我假设这是因为我得到的是类实例的分配,而不是节点链的分配
我也试过做sys.getsizeof(node.add(3))
。离开上面的假设,我会把它给我的值乘以节点链的大小加上sys.getsizeof(DoublyLinkedBag())
给我的值吗
关联的双链接类:
class DoublyLinkedBag:
class Node:
def __init__(self, element = None):
self.next = None
self.prev = None
self.element = element
def __init__(self):
self.front = None
self.rear = None
self.size = 0
def add(self, element):
n = self._make_new_node(element)
if self.size == 0:
self.front = self.rear = n
self.size += 1
else:
n.prev = self.rear
self.rear.next = self.rear = n
self.size += 1
# contains, removes methods here...
# add nodes
node = DoublyLinkedBag()
node.add(4)
node.add(6)
问题2
节点是存储在堆内存还是堆栈内存中,为什么?我自己也试着推理,但我发现自己在两个答案之间跳跃
为了计算内存分配,我建议尝试使用pympler lib中的asizeof
相关问题 更多 >
编程相关推荐