Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 脚本返回";“杀死”;_Python - Fatal编程技术网

Python 脚本返回";“杀死”;

Python 脚本返回";“杀死”;,python,Python,我有一个相当简单的脚本,它生成100000000(九个零)个数字,然后将生成的数字存储在一个文件中,并记录它们生成的次数 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(ope

我有一个相当简单的脚本,它生成100000000(九个零)个数字,然后将生成的数字存储在一个文件中,并记录它们生成的次数

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


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

看起来你的问题并不在于此。你的问题在于:

for i in range(0, 1000000000):
         ^^^^^^^^^^^^^^^^^^^^
在Python2上,这是一个100000000个项目的列表,超出了系统的处理能力。您想要的是
xrange
,而不是
range
<代码>xrange根据需要生成数字。(在Python3上,
range
xrange
以前做过的事情,
xrange
已经不存在了。)


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

看起来您的问题不是dict。您的问题是:

for i in range(0, 1000000000):
         ^^^^^^^^^^^^^^^^^^^^
在Python2上,这是一个100000000个项目的列表,超出了系统的处理能力。您想要的是
xrange
,而不是
range
<代码>xrange根据需要生成数字。(在Python3上,
range
xrange
以前做过的事情,
xrange
已经不存在了。)


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

如果是数组,则该字典需要大约3GB的内存。你有那么多内存吗?@RishavKundu-“如果是数组”。。。但这是一个错误dictionary@cricket_007字典比数组占用更多的空间。我有12GB的RAM,实际上是11GB的免费使用
xrange
而不是
range
。如果是数组,字典需要大约3GB的内存。你有那么多内存吗?@RishavKundu-“如果是数组”。。。但这是一个错误dictionary@cricket_007字典比数组占用更多的空间。我有12GB的RAM,实际上是11GB的免费使用
xrange
而不是
range
,不过,假设一个数字有8个字节,大约是7gb,这并不能解释死亡状态。@RishavKundu:实际上我只是想在答案中添加一些关于这一点的内容。根据您的编辑,范围大约为22GB。。xD使用
xrange
现在,它仍然没有完成,但是它没有崩溃,直到假设一个数字有8个字节,大约是7gb,这并不能解释被杀死的状态。@RishavKundu:实际上我正要在答案中添加一些关于这个的内容。根据您的编辑,这个
范围
大约是22GB。。xD使用
xrange
现在,它仍然没有完成,但也没有崩溃