【发布时间】:2014-07-21 01:38:45
【问题描述】:
假设我创建了一个大字节数组。让我们说 1000000 字节或总共 1mb。解释器是在内存中保留 1mb 还是在填充字节数组时使用内存。意思是 1000000 字节的大部分为空的字节数组在内存中使用了 1mb 吗?
【问题讨论】:
假设我创建了一个大字节数组。让我们说 1000000 字节或总共 1mb。解释器是在内存中保留 1mb 还是在填充字节数组时使用内存。意思是 1000000 字节的大部分为空的字节数组在内存中使用了 1mb 吗?
【问题讨论】:
我认为它是在施工时分配/保留的。在我的系统上,下面这行代码会将解释器的内存使用量增加约 100MB。
b = bytearray(1024*1024*100)
如果文档没有提到它,我猜它取决于实现。
【讨论】:
sys.getsizeof 返回对象的大小(以字节为单位):
In [242]: sys.getsizeof(bytearray(10**6))
Out[242]: 1000025
所以bytearray(10**6) 确实使用了大约 1MB 的空间。
请注意,虽然sys.getsizeof 给出了字节数组的准确答案,但如果应用于列表等容器,它只给出容器的大小,不包括容器的内容。
【讨论】: