Ich bin ein Neuling in Python. Ich habe einen Speicherfehler, wenn ich zwei dicts aus zwei Dateien lade. Diese beiden Dateien sindWie 2 große Diktat in Python laden?
with open(filename, 'rb') as f:
hashtable_album = {}
for line in f:
# print i
p = 0
q = line.find("####")
# print p
# print q
itembuf = line[p:q]
# print itembuf
dictbuf = line[q + 4:-1]
# print line
a = json.loads(dictbuf)
# print a
# print type(a)
hashtable_album[itembuf] = a
f.close()
with open(filename2, 'rb') as f2:
hashtable_item={}
i=0
for line in f:
print len(dic)
print i
#print line
p = 0
q = line.find("####")
# print p
# print q
itembuf = line[p:q]
# print itembuf
dictbuf = line[q + 4:-1]
# print line
a = json.loads(dictbuf)
#print a
# print type(a)
hashtable_item[itembuf] = a
i=i+1
f2.close()
die erste Datei über 400 MB und es ist größer als die zweite, die etwa 200 MB ist, und ich kann die erste Datei successfully.But laden, wenn ich die zweite Datei laden I Speicherfehler bekam als
Traceback (most recent call last):
File "E:/py_workspace/1.0_memory_error.py", line 44, in <module>
hashtable_item[itembuf] = a
MemoryError
Wenn ich die Reihenfolge zu ändern, die Datei schreib file2 zunächst und file1 zu folgen, gibt es auch einen Speicherfehler, wenn ich laden Sie die zweite Datei zu laden. Ich denke, dass der Speicherfehler aus dem dict kommt so lösche ich die dict, nachdem ich file1 als
hashtable_album = {}
laden und zum Laden von file2 gehen. Und dieses Mal funktioniert es ohne Speicherfehler. Aber ich muss diese 2 dicts gleichzeitig verwenden. Wie kann ich sie zusammen laden?
tipps: Ich habe versucht, die cPickle das Diktat zu speichern, aber es kann nicht funktionieren und ich bekomme entweder den Speicherfehler.
** Daten Container und Komparator in der gleichen Skript **, ist sehr schlechte Idee! Daten, die für Sie wichtig sind und Sie irgendwo speichern, aber 'warum verwenden Sie kein Datenbanksystem?' Direkt 'IO' hat immer Fehler ausgelöst (hat Hardwareleistungsfehler). Haben Sie diesen Code unter "Virtuelles Betriebssystem" ausgeführt? – dsgdfg