我有一個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