저는 파이썬에서 초보자입니다. 두 파일에서 두 개의 dict을로드 할 때 메모리 오류가 발생했습니다. 이 두 파일은 첫 번째 파일이 400메가바이트에 관한파이썬에서 큰 dict를로드하는 방법은 무엇입니까?
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()
하고는 2백메가바이트에 관한 두 번째 다음 더 큰, 그리고 내가 메모리 오류가있어 두 번째 파일을로드 할 때 내가 첫 번째 파일 successfully.But을로드 할 수 있습니다 내가 두 번째 파일을로드 할 때
Traceback (most recent call last):
File "E:/py_workspace/1.0_memory_error.py", line 44, in <module>
hashtable_item[itembuf] = a
MemoryError
내가 먼저 파일 2 읽고 따라이 file1의 파일을로드 할 순서를 변경하는 경우
으로, 또한 메모리 오류가 있습니다. 내가hashtable_album = {}
으로 파일 1로드로드 파일 2에 이동 한 후 메모리 오류 그래서 나는 DICT를 지우 DICT에서 오는 것 같아요. 그리고 이번에는 메모리 오류없이 작동합니다. 하지만이 두 개의 dicts를 동시에 사용해야합니다. 어떻게 그들을 함께로드 할 수 있습니까?
팁 : 나는 dick을 저장하기 위해 cPickle을 시도했지만 작동하지 않으며 메모리 오류도 발생합니다.
** 동일한 스크립트 **의 데이터 컨테이너 및 비교기는 매우 나쁜 생각입니다! 여러분에게 중요한 데이터와 어딘가에 저장하지만'데이터베이스 시스템을 사용하지 않는 이유는 무엇입니까? '직접적으로'IO'는 항상 오류를 발생 시켰습니다 (하드웨어 성능 버그가 있음). "가상 OS"에서이 코드를 실행 했습니까? – dsgdfg