Birkaç hafta boyunca bu konu üzerinde çalışıyorum ve python bellek sızıntısı hakkında birçok soru okudum ama anlayamıyorum.Python Öldü (büyük olasılıkla bellek sızıntısı)
Yaklaşık 7 milyon satır içeren bir dosyam var. Her satır için bir sözlük oluşturmam gerekiyor. Ne yapıyorum olduğunu
[{'a': 2, 'b':1}{'a':1, 'b':2, 'c':1}]
...
list = []
for line in file.readlines():
terms = line.split(" ")
dict = {}
for term in terms:
if term in dict:
dict[term] = dict[term] + 1
else:
dict[term] = 1
list.append(dict.copy())
dict.clear()
file.close()
sorun bu çalıştırdığınızda her zaman 6000000 çizgisi etrafında öldürülmeden olmasıdır: Yani şöyle sözlükte listesidir. Aslında ben sadece dict = {}
yapıyordum ama ben benzer yazılarını okuduktan sonra dict.clear() yapıyorum, ama bir şey geliştirmedi. Döngüsel referanslarla ilgili bazı yazılar biliyorum ve koduma baktım ama bu problemi görmedim.
Listede 7 milyon sözlük saklamanın Python'da ele alınamayacağından şüphem yok mu? Bütün şeyleri öldürmeden nasıl yönetebileceğime dair her türlü tavsiyeyi takdir ediyorum. Bunun size koduyla elde etmek çalıştığımız şey olduğuna inanıyoruz
from collections import Counter
with open('input') as fin:
term_counts = [Counter(line.split()) for line in fin]
:
Burada ne elde etmeye çalışıyorsunuz? –
@ThomasOrozco Sorularımı biraz düzenledim, ama yapmaya çalıştığım şey, her satır için terim sözlüğünü saklamaktır. – kabichan
Dosya için _dosya değiştirmeyi denediniz mi? ? – uselpa