python输出字典及该字典大小_Python字典大小最大限制

I am trying to understand the reason for the following MemoryError. Is there some pre-defined limit on dictionaries in python?

self.text is long string read in from a file (about 4.5 MB)

L is equal to 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()

Output

Memory Error at the 4577890th iteration!

1573004

63762

I am running the program on a windows machine with 16gb of ram if that helps.

解决方案

You are storing 1 + 2 + 3 + ... + 4641650 + 4641651 + 4641652... bytes in your loop. By the iteration in question, you have gone around 63762 times, which is 2032796322 bytes. One more doubline and lo and behold, you are over the 32 bit integer limit, which seems like a reasonable place to run into a memory error to me.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值