3 回答

TA贡献1946条经验 获得超4个赞
首先,请参阅 Python数组可以达到多大?和Numpy,长数组问题
其次,唯一的实际限制来自您拥有的内存量以及系统如何存储内存引用。没有每个列表的限制,因此Python会一直运行直到内存耗尽。两种可能性:
如果您在较旧的OS上运行,或者在迫使进程使用有限数量的内存的操作系统上运行,则可能需要增加Python进程可以访问的内存数量。
使用分块将列表分开。例如,执行列表的前1000个元素,腌制并将其保存到磁盘,然后再进行下1000个。要使用它们,请一次释放一个块,以免耗尽内存。从本质上讲,这是数据库用来处理超出RAM容量的数据的相同技术。

TA贡献1966条经验 获得超4个赞
MemoryError您看到的异常是可用RAM耗尽的直接结果。这可能是由于Windows(32位程序)对每个程序施加了2GB的限制,或者计算机上没有可用的RAM。(此链接是上一个问题)。
如果您使用的是Windows的64位副本,那么您应该能够使用Python的64位副本扩展2GB。
这IndexError可能是因为Python MemoryError 在计算整个数组之前遇到了异常。同样,这是一个内存问题。
为了解决这个问题,您可以尝试使用64位的Python副本,或者更好地找到将结果写入文件的方法。为此,请看numpy的内存映射数组。
您应该能够将整个计算集运行到这些数组之一中,因为实际数据将写入磁盘,并且只有一小部分存储在内存中。

TA贡献1773条经验 获得超3个赞
Python没有施加内存限制。但是,MemoryError
如果RAM用完,您将得到一个。您说您有20301个元素list
。对于似乎简单的数据类型(例如int
),这似乎太小而不会引起内存错误,但是如果每个元素本身都是一个占用大量内存的对象,则很可能内存不足。
该IndexError
然而,可能是造成因为你ListTemp
已经得到了只有19767元(索引0到19766),和你想过去的最后一个元素的访问。
在不确切知道您要做什么的情况下很难说可以避免达到极限的方法。使用numpy
可能会有所帮助。您似乎正在存储大量数据。可能您不需要在每个阶段都存储所有内容。但是,不知道是不可能说的。
添加回答
举报