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。
答案 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
>>>