我有一个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])
而且Killed
finished counting
打印完之后,情况发生,并且完整的消息是:
killed (program exited with code: 137)
后你所得到的错误消息的确切措辞。 –
“遇难”通常意味着进程收到一些信号导致它退出。在这种情况下,由于它在脚本的同一时间发生,很可能它是一个破损的管道,该进程正在尝试读取或写入已在另一端关闭的文件句柄。 –
这不是一个关于“杀死”消息来自哪里的答案,但是如果它是由于某种系统内存限制导致的,你可以通过使用'counter.iteritems()'而不是'counter .items()'在你的最后一个循环中。在Python 2中,'items'返回字典中键和值的列表,如果它非常大,则可能需要大量内存。相反,'iteritems'是一个发生器,在任何时候只需要少量的内存。 – Blckknght