大規模なCSVファイルをインポートして、ファイル内の各単語の出現数を数え、その数を別のCSVファイルにエクスポートするPythonスクリプトがあります。「殺した」とはどういう意味ですか?
しかし、何が起こっているかは、そのカウント部分が終了し、エクスポートが開始されると、末尾に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)
あなたが取得しているエラーメッセージの正確な内容を投稿してください。 –
"kill"とは、プロセスが何らかの信号を受信して終了することを意味します。この場合、スクリプトと同時に発生しているので、破損したパイプである可能性が高く、プロセスは相手側で閉じられているファイルハンドルに対して読み書きしようとしています。 –
'killされた'メッセージがどこから来たのかについての答えはありませんが、何らかのシステムのメモリ制限を超えているために、 'counter 'の代わりに' counter.iteritems() 'を使って修正できるかもしれません.items() 'を実行します。 Python 2では、 'items'は辞書内のキーと値のリストを返します。非常に大きい場合は、大量のメモリが必要になるかもしれません。対照的に、「iteritems」は、所与の時間に少量のメモリしか必要としないジェネレータである。 – Blckknght