Skip to main content
 首页 » 编程设计

python之脚本返回 "Killed"

2025年05月04日35freeliver54

我有这个相当简单的脚本,它生成 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() 应该足以防止此类问题,但事实并非如此。

那么我该如何继续完成这样的任务呢?

请您参考如下方法:

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

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

在 Python 2 上,这是一个 1000000000 项长的列表,超出了系统的处理能力。您需要 xrange,而不是 range。 xrange 按需生成数字。 (在 Python 3 上,range 执行 xrange 过去的工作,而 xrange 已不复存在。)

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