脚本返回" Killed"

时间:2015-12-07 17:41:24

标签: python

我有这个相当简单的脚本,它生成1000000000(9个零)数字,然后在生成的数字中存储生成它们的次数。

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()应该足以防止此类问题,但事实并非如此。

那我怎么能继续完成这样的任务呢?

1 个答案:

答案 0 :(得分:5)

看起来你的问题不是dict。你的问题在这里:

for i in range(0, 1000000000):
         ^^^^^^^^^^^^^^^^^^^^

在Python 2上,这是一个列表1000000000个项目的长度,超过了您的系统可以处理的项目。您想要xrange,而不是rangexrange按需生成数字。 (在Python 3上,range执行xrange过去和xrange已消失的内容。)

哦,如果你认为11 GB应该足够用于该列表:不是在Python中。尝试sys.getsizeof(0)查看int占用的字节数。