我有一个Python脚本,它导入一个大型CSV文件,然后计算文件中每个单词出现的次数,最后将这些计数导出到另一个CSV文件。
但是问题在于,一旦计算完成并开始导出,终端会显示Killed
。
我不认为这是内存问题(如果是内存错误,我应该会得到一个内存错误而不是Killed
)。
可能是进程运行时间太长了?如果是这样的话,有没有办法延长超时时间,以避免出现这种情况?
以下是代码:
csv.field_size_limit(sys.maxsize)
counter={}
with open("/home/alex/Documents/version2/cooccur_list.csv",'rb') as file_name:
reader=csv.reader(file_name)
for row in reader:
if len(row)>1:
pair=row[0]+' '+row[1]
if pair in counter:
counter[pair]+=1
else:
counter[pair]=1
print 'finished counting'
writer = csv.writer(open('/home/alex/Documents/version2/dict.csv', 'wb'))
for key, value in counter.items():
writer.writerow([key, value])
在finished counting
打印之后发生了Killed
,完整的消息是:
killed (program exited with code: 137)
counter.iteritems()
代替counter.items()
来解决该问题。在Python 2中,items
返回字典中键和值的列表,如果非常大可能需要大量内存。相比之下,iteritems
是一个生成器,每次只需要一小部分内存。 - Blckknght