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
答案 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) }