2016-12-15 6 views
0

우선 먼저 미리 감사드립니다!파이썬 피클 메모리 문제

그래서 저는 특허 인용 정보가 포함 된 큰 사전 개체를 Pickle.dump하려고합니다.

'MemoryError'오류 메시지가 표시됩니다.

파일이 너무 커서 Pickle이 메모리로 덤프 할 수 없기 때문입니다. 누구든지이 문제를 해결할 수있는 방법에 대한 제안이나 큰 파일 크기 메모리 저장을위한 좋은 대안을 가지고 있습니까?

것은 단순히 코드를 사용하고 덤프하려면

def pickleDumpCd(): 
with open("./PickleDumpCd","wb")as cdFP: 
    pickle.dump(createSameTSVDateDict("uspatentcitation.tsv"),cdFP) 

덤프되는 것은 TSV (아래 코드)에서 만든 사전입니다 :

def createSameTSVDateDict(path): 
citationDateDict = defaultdict() 
with open(path) as citTSV: 
    print("Creating Same TSV Date Dict") 
    header = 0 
    for line in csv.reader(citTSV, dialect="excel-tab"): 
     if header > 0 and line[1] not in citationDateDict: 
      citationDateDict[line[1]] = [(line[3],line[2])] 
     elif header > 0 and line[2] in citationDateDict: 
      citationDateDict[line[1]].append((line[3],line[2])) 
     header += 1 
return citationDateDict 

이 문제는 저를 괴롭 히고있다 동안, 그래서 어떤 생각/제안 많이 감사.

덕분에, 루이

+0

일반적으로 MemoryError는 "file too big"에 대해 발생하지 않지만 Python이 충분한 메모리 (RAM)를 할당 할 수 없기 때문에 발생합니다. 파이썬 32 비트 또는 64 비트를 사용합니까? 32 일 경우 64 비트 버전으로 전환하십시오. –

+0

@ MaximilianMatthé Python 3.5.2 | Anaconda 4.2.0 (64 비트) win32 -이 문제는 의심 스럽지만 신속한 응답에 감사드립니다! – lel23

답변

0

은 내가 파이썬의 64 비트 버전을 설치하여 해결할 비슷한 문제가 있었다. 피클하려는 데이터가 너무 크지 않으면 문제가 해결 될 수 있습니다.

+0

현재 64 비트 Python을 사용하고 있습니다. - 응답 해 주셔서 감사합니다. – lel23