Ho lavorato su questo per alcune settimane e ho letto molte domande sulla perdita di memoria di Python ma non riesco a capirlo.Python gets Killed (probabilmente perdita di memoria)
Ho un file che contiene circa 7 milioni di righe. Per ogni linea, ho bisogno di creare un dizionario. Quindi questo è un elenco di dizionario che assomiglia:
[{'a': 2, 'b':1}{'a':1, 'b':2, 'c':1}]
Quello che sto facendo è ...
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()
Il problema è che quando faccio funzionare questo sempre viene ucciso attorno alla linea 6000000o. Inizialmente stavo semplicemente facendo dict = {}
ma l'ho cambiato così faccio dict.clear() dopo aver letto post simili, ma non ha migliorato nulla. Conosco alcuni post menzionati su riferimenti circolari e ho esaminato il mio codice ma non pensavo di avere quel problema.
Dubito che la memorizzazione di 7 milioni di dizionari in un elenco non possa essere gestita in Python? Gradirei qualche consiglio su come posso gestire tutto senza essere ucciso.
(la versione è 2.7.4)
Cosa stai cercando di ottenere qui? –
@ThomasOrozco Ho modificato la mia domanda un po ', ma quello che sto cercando di fare è archiviare il termine dizionario di conteggio per ogni riga – kabichan
Hai provato a sostituire _for linea in file.readlines(): _ di _per riga nel file: _ ? – uselpa