扩展python中列表的大小

时间:2013-08-09 11:22:41

标签: python python-2.7

我有一个函数,它将字符串的子字符串附加到列表中。当输入字符串很大时

MemoryError exception

被抛出。 1维列表是否有任何长度限制?。如果是,我该如何扩展它?

4 个答案:

答案 0 :(得分:3)

是。有效内存。通过添加更多交换,添加更多RAM或迁移到具有更大内存限制的体系结构,为进程提供更多可用内存。

答案 1 :(得分:2)

除了增加内存外,还有其他几种选择。

  1. 尝试更改算法,以减少内存密集。例如,如果您不需要同时使用所有这些子字符串,则可以使用生成器函数或生成器表达式连续创建和使用它们。
  2. 如果您需要它们,请尝试在内存中保留“大字符串”,并使用buffer()
  3. 如果大字符串来自文件,您可以mmap()将此文件(或其中的一部分)放入您的地址空间。

答案 2 :(得分:0)

您可以将数据写入文件,而不是将其附加到列表中。

答案 3 :(得分:0)

你是否偶然使用32位构建的python?当使用64位地址空间时,假设您有足够的可用交换空间,那么在理论上可以访问所有内存之前,您的进程应该暂停 grinding 。在32位进程中,您只能访问大约3千兆字节的内存;今天的标准并没有那么多。