【发布时间】:2016-02-11 07:04:10
【问题描述】:
我正在尝试创建一个大小为 1 MB 的列表。虽然以下代码有效:
dummy = ['a' for i in xrange(0, 1024)]
sys.getsizeof(dummy)
Out[1]: 9032
以下代码不起作用。
import os
import sys
dummy = []
dummy.append((os.urandom(1024))
sys.getsizeof(dummy)
Out[1]: 104
谁能解释一下原因?
如果您想知道为什么我不使用第一个代码 sn-p,我正在编写一个程序来对我的内存进行基准测试,方法是编写一个 for 循环,将块(大小为 1 B、1 KB 和 1 MB)写入记忆。
start = time.time()
for i in xrange(1, (1024 * 10)):
dummy.append(os.urandom(1024)) #loop to write 1 MB blocks into memory
end = time.time()
【问题讨论】:
-
或许能帮上忙:
sys.getsizeof(b"a"*(1024-37)) -
你不会得到一个理智的记忆基准,除了你的代码之外还有很多其他事情发生。对于这项任务,Python 是一个糟糕的工具选择。
标签: python memory data-structures