内存错误的可能性?

时间:2012-07-23 19:02:54

标签: python memory

a=raw_input()
prefix_dict = {}
for j in xrange(1,len(a)+1):
    prefix = a[:j]
    prefix_dict[prefix] = len(prefix)
print prefix_dict

上述代码中是否存在内存错误的可能性?此代码在服务器上运行,服务器是运行32位Ubuntu(Ubuntu 12.04 LTS)的四核Xeon机器。对于少数情况,它的工作和少数显示内存错误。仅供参考:我不知道他们正在测试的情况,但输入是小写字母。输入大小< = 10,000

2 个答案:

答案 0 :(得分:0)

仅用于数据的内存量将是1 + 2 + 3 ... + n-2 + n-1 + n其中n是输入的长度,换句话说,{{1 }}。这适用于(n + 1)* n / 2。如果n是10,000,那么大约50 MB的字符串数据加起来,但是python字典使用了大量的RAM来存储10,000个条目。在我的OSX盒子上进行测试,这看起来很小,而且如果我在其上运行此代码,则该过程显示使用了53.9 MB:

len(a)

我没有看到你的代码有任何明显的错误,当我在一个10,000字母长的字符串上运行它时,很高兴地吐出大约50mb输出,所以其他东西一定是出错了。

str = "a" d = {} for i in xrange(10000): d[str] = i str = str + "a" 显示为进程的内存使用情况?

答案 1 :(得分:0)

也许一小段代码会有所帮助:

prefix_dict = { a[:j]:j for j in xrange(1, len(a) + 1) }