【发布时间】:2017-12-04 20:01:31
【问题描述】:
我正在尝试在 python 中预分配一个列表
c=[1]*mM #preallocate array
我的问题是我遇到了 MemoryError,因为
mM=4999999950000000
解决这个问题的最佳方法是什么。我正在考虑创建一个新对象,将我的列表拆分为大约500000000 的值。
这是我应该做的还是有创建具有大量输入的数组的最佳实践?
【问题讨论】:
-
您需要大约 5 PB 的内存来存储它。
-
是的。你到底想用这个来完成什么?此外,如果您使用的是 Linux,那么您可以执行类似 this with memory swapping. 的操作
-
您的实际问题是什么。为什么需要创建一个大小为 4999999950000000 的数组/列表?正如所指出的。这将需要 5PB 的存储空间..
-
如果您假设 Python 中的整数是 4 个字节(一个整数消耗的内存量在需要时可能会急剧增加),您需要超过 20 个 PB内存来存储该数据。
-
@GhilasBELHADJ 实际上,在 64 位系统上,您需要 40 PB。仅针对
list对象中的底层数组:4999999950000000 *1e-9*8,加上 Python 开销,加上额外的空间......
标签: python arrays list python-3.x memory