0

http://docs.python.org/2/library/sys.html说 maxsize 是 [...] 最大尺寸 [...] !你猜怎么着 ?我需要超越它!

在我的 64 位系统上,maxsize = 2**63-1 = 9223372036854775807

如果一个数组是最大的,那么一个 N 维数组是 N-maxsized 吗?

因为在 python 中,N 维数组是数组中的数组,所以我想代码对于超出 maxsize 限制是有价值的?

明白我需要记忆...

array=[]
i,j=0
while j<(2**63-1):
   while i<(2**63-1):
      array[j].append(1)
      i=i+1
j=j+1
4

1 回答 1

1

无法承受错误和遗留问题,maxsize是(大约)容器1可以达到的最大尺寸。出于地址空间限制的简单原因(以及实现中的一些选择,但这些是上述限制的结果),即使在 64 位系统上也不能拥有那么大的列表。你甚至不能在你的计算机上存储 2^63-1字节(甚至不能在硬盘上!),更不用说 2^63-1 完全成熟的 Python 对象了。

您不知道您的示例代码需要多少内存。您的 CPU 甚至无法处理所需内存的一小部分。甚至您的整个硬盘都无法容纳很大一部分。您需要 800 万个容量为 1 TiB 的硬盘来存储 2^63-1字节,而同样多1的 s 则需要 8 倍。到目前为止,这甚至超过了 NSA 犹他州数据中心所谓的容量。那是 2^63-1,而不是2^63 * 2^63 = 2^126。从物理角度考虑后一个数字是荒谬的。这是无法枚举或暴力破解的数量级,并且可以随机采样而不会重复。

如果该物理限制不存在,或者如果存在小于实际物理限制的列表大小的人为限制,则您确实可以使用列表中的列表来回避问题。不过,这在实践中不太可能成为实际问题。容器大小的最小限制是 20 亿左右。

1假设容器的每个元素物理存在于 RAM 中,而不是移动到磁盘或按需计算或任何东西。

于 2014-03-05T21:12:11.710 回答