Python 大型 bytearray 内存
假设我创建了一个很大的字节数组。比如说,1000000字节,也就是1MB的总大小。那么,解释器会在内存中预留1MB的空间,还是说只有在字节数组逐渐填充的时候才会使用内存?也就是说,一个大部分是空的1000000字节的字节数组,会占用1MB的内存吗?
2 个回答
2
sys.getsizeof 可以用来查看一个对象占用的字节数:
In [242]: sys.getsizeof(bytearray(10**6))
Out[242]: 1000025
所以,确实 bytearray(10**6)
大约占用了 1MB 的空间。
需要注意的是,虽然 sys.getsizeof
对于字节数组(bytearray)能给出准确的大小,但如果用在像列表这样的容器上,它只会告诉你这个容器本身的大小,而不包括容器里面的内容。
3
我觉得在创建的时候就已经分配或保留了内存。下面这一行代码在我的系统上会让解释器的内存使用量增加大约100MB。
b = bytearray(1024*1024*100)
如果文档没有提到这一点,我想这就要看具体的实现方式了。