【发布时间】:2010-12-31 10:54:40
【问题描述】:
我做了一件愚蠢的事,比如:
from itertools import *
rows = combinations(range(0, 1140), 17)
all_rows = []
for row in rows:
all_rows.append(row)
毫不奇怪;我用完了内存地址空间(32 位 python 3.1)
我的问题是:如何计算大型列表需要多少内存地址空间?在这种情况下,列表的顺序为2.3X10^37。
Python中是否有一个函数可以返回我正在寻找的信息,或者实际上是一个较小但相似的列表的大小?这些工具是什么?
【问题讨论】:
-
不就是1140选17吗?
-
10^37?真的吗?这大约是 125 位的寻址空间来简单地计算元素。您必须从基本面重新考虑这一点。存储在这里并不是真正的问题。除了详尽地枚举所有组合之外,您还需要做一些事情。
-
顺便说一下,试试 all_rows = list(combinations(range(0, 1140), 17)) - 应该会减少内存使用量。
-
顺便说一句。 64 位只能数到 10^19。
-
Vincent 的问题清楚地表明他知道这是“愚蠢的”,他真正感兴趣的是如何计算内存消耗,特别是有哪些工具可用。这是一个完全有效、陈述清楚的问题。
标签: python memory-management 32bit-64bit