内存中第三方对象的大小

时间:2014-01-16 11:17:07

标签: python biopython

sys.getsizeof()函数返回内存中对象的大小,以字节为单位。由于此函数可能会为第三方objects返回不准确的结果,如何确定BioPython对象使用的内存量?

我使用example代码(已修改)加载了一个286MB的文件:

from Bio import SeqIO
handle = open("example.gb", "rU")
records = list(SeqIO.parse(handle, "genbank"))
handle.close()

sys.getsizeof(records)表示它使用的是268KB。

1 个答案:

答案 0 :(得分:3)

sys.getsizeof(obj)返回对象obj本身的大小,而不是它可能以某种方式引用的任何其他对象的大小:

>>> l = []
>>> sys.getsizeof(l)
72
>>> zero = 0
>>> sys.getsizeof(zero)
24
>>> l.append(zero)
>>> sys.getsizeof(l)
104
>>> 72 + 24
96
>>> l.append(zero)
>>> sys.getsizeof(l)
104
>>> l.append(zero)
>>> sys.getsizeof(l)
104
>>> l.append(zero)
>>> sys.getsizeof(l)
104
>>> l.append(zero)
>>> sys.getsizeof(l)
136
>>> 
>>> class Foo(object):
...     def __init__(self, bar=None):
...         self.bar = bar
... 
>>> f = Foo()
>>> sys.getsizeof(f)
64
>>> f.bar = 1
>>> sys.getsizeof(f)
64
>>> f.bar = l
>>> sys.getsizeof(f)
64
>>>