我有这个相当简单的脚本,它生成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
消息.根据这个问题,'杀死'是什么意思?使用dic.iteritems()
应足以防止此类问题,但事实并非如此.
那我怎么能继续完成这样的任务呢?
看起来你的问题不是dict.你的问题在这里:
for i in range(0, 1000000000): ^^^^^^^^^^^^^^^^^^^^
在Python 2上,这是一个列表1000000000个项目的长度,超过了您的系统可以处理的项目.你想要的xrange
不是range
.xrange
根据需要生成数字.(在Python 3上,range
做了xrange
过去和xrange
过去的事情.)
哦,如果你认为11 GB应该足够用于该列表:不是在Python中.尝试sys.getsizeof(0)
查看int占用的字节数.