【发布时间】:2016-03-12 10:11:25
【问题描述】:
我有这个相当简单的脚本,它生成 1000000000(九个零)数字,然后将生成的数字存储在一个文件中,以及它们生成的次数。
import random
import csv
dic = {}
for i in range(0, 1000000000):
n = random.randint(0, 99999)
if n in dic:
dic[n] += 1
else:
dic[n] = 1
writer = csv.writer(open('output', 'w'))
for key, value in dic.iteritems():
writer.writerow([key, value])
writer.close()
脚本正在退出,并带有 Killed 消息。根据这个问题What does 'killed' mean?,使用dic.iteritems() 应该足以防止此类问题,但事实并非如此。
那么我该如何继续完成这样的任务呢?
【问题讨论】:
-
如果字典是一个数组,它需要大约 3GB 的内存。你有那么多内存吗?
-
@RishavKundu - “如果它是一个数组”......但它是一个字典
-
@cricket_007 字典比数组占用更多空间。
-
我有 12GB 内存,实际上 11GB 可用
-
使用
xrange而不是range
标签: python