Python字典大小最大限制

时间:2015-03-06 01:48:27

标签: python dictionary memory-leaks

我试图了解以下MemoryError的原因。 python中的字典是否有一些预定义的限制?

self.text是从文件中读取的长字符串(大约4.5 MB) L等于4641652

    L = len(self.text) 
    test = {}
    for i in xrange(L,0,-1):
        try:
            test[i] = self.text[i-1:]
        except MemoryError:
            print "Memory Error at the " + str(i) +"th iteration!"
            print sys.getsizeof(test)
            print len(test)
            exit()

输出

Memory Error at the 4577890th iteration!
1573004
63762

如果有帮助的话,我在带有16GB内存的Windows机器上运行程序。

1 个答案:

答案 0 :(得分:1)

您在循环中存储1 + 2 + 3 + ... + 4641650 + 4641651 + 4641652 ...字节。通过有问题的迭代,你已经走了63762次,即2032796322字节。再多一点,看看,你超过32位整数限制,这似乎是一个合理的地方,让我遇到内存错误。