我有一个相当简单的脚本,它生成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占用了多少字节。关于python - 脚本返回“已杀死”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34139819/