这将显示使用了多少内存:
import sys
a = ["abcdef", "ghijklmnop"]
sys.getsizeof(a) # => 44 (size of list a in bytes)
当您谈论“将列表发送到 HTML”时,您是在谈论用 Python 呈现页面,还是将其作为 JSON 发送?您是仅发送所需的最少数据,还是发送“所有内容”然后进行过滤?
.
编辑:好点。以下情况如何:
import sys
import datetime
def show_mem(data, indent=" ", depth=0):
"Recursively show the memory usage of a data structure"
mysize = sys.getsizeof(data)
if isinstance(data, (list,tuple,dict)):
childsize = 0
print("{}{} bytes: [".format(indent*depth, mysize))
for d in data:
childsize += show_mem(d, indent, depth+1)
print("{}] (total: {} bytes)".format(indent*depth, mysize+childsize))
return mysize+childsize
else:
print("{}{} bytes: {}".format(indent*depth, mysize, repr(data)))
return mysize
show_mem([1223456, 1245361536363, 'infooooooooo123', datetime.date(1975,7,21), "http://www.somesite.org/the/path/page.htm"])
返回
56 bytes: [
12 bytes: 1223456
18 bytes: 1245361536363L
36 bytes: 'infooooooooo123'
20 bytes: datetime.date(1975, 7, 21)
62 bytes: 'http://www.somesite.org/the/path/page.htm'
] (total: 204 bytes)
.
编辑#2:您应该在(使用一条记录呈现的页面)与(使用两条记录呈现的页面)上运行差异;这应该准确地向您显示添加一条记录的页面后果。您的 HTML 可能有很多隐藏属性或内联 Javascript,这会增加其大小。
即,在 Linux 命令行上:
diff -b saved_one_record.html saved_two_records.html
应该返回类似
61a66
><tr class="rowA">
<td class="_1"><a href="#row=1223456" alt="Show details">1223456</a></td>
<td class="_2"><span style="">1245361536363</span></td>
<td class="_3"><a href="http://www.somesite.org/the/path/page.htm"><b>infooooooooo123</b></a></td>
<td class="_4">July 21 1975</td>
</tr>
作为 Django 模板中最终呈现的每行 HTML。在这个例子中,204 字节的数据结构变成了 306 字节的 HTML 文件。根据您的测试,您应该会看到超过一千个字符。如果您发布差异结果,也许我们可以为您提供一些使其更紧凑的想法。