2014-10-14 3 views
-3

대용량 데이터를 처리 할 때 파이썬 사전이 얼마나 효율적인지 알고 싶습니다. 두 개의 12GB 파일이 있다고 가정 해 봅시다. 데이터의 90 %가 각 파일에서 고유 한 각 파일에 대해 두 개의 사전을 만들 수 있습니다. 다음으로 키를 기반으로 데이터를 비교할 때 이러한 사전이 필요합니다. 16GB 컴퓨터가 모든 메모리를 소비하고 스크립트 실행을 건너 뛰었습니다. 아니면 파이썬의 사전에 대한 대안이 있습니까? 다음은 샘플 코드입니다.큰 데이터를 처리하기위한 파이썬 사전

for line in fileinput.input(src_one,0,"",0,'r',False): 
    line = line.strip() 
    TmpArr=line.split('|') 
    key=TmpArr[2],TmpArr[3],TmpArr[11],TmpArr[12],TmpArr[13],TmpArr[14],TmpArr[15] 
    DictOne[key]=line 
for line in fileinput.input(src_two,0,"",0,'r',False): 
    line = line.strip() 
    TmpArr=line.split('|') 
    key=TmpArr[2],TmpArr[3],TmpArr[11],TmpArr[12],TmpArr[13],TmpArr[14],TmpArr[15] 
    DictTwo[key]=line 

감사합니다.

+0

모든 기본 오타/문장 부호 오류를 없애기 위해 질문을 편집하십시오. – Unapiedra

+0

달성하고자하는 것을 지정할 수 있다면 엄청난 도움이 될 것입니다. 분명히, 24GB의 데이터를 16Gb의 RAM에 넣을 수는 없습니다. 하지만 가장 가능성이 높습니다. 원하는 것을 지정하면 누군가가 도움을 줄 수 있습니다. – Unapiedra

+0

@Unapiedra 의견을 주셔서 감사합니다, 기본적으로 6 열을 기반으로 두 개의 파일을 비교하고 일치하는 레코드, 다른 파일에 두 개의 파일에서 두 개의 파일에서 필적할만한 기록을 작성해야합니다. 분명히 내가 16 기가 바이트 RAM에 24 기가 바이트를 넣을 수 없지만, 메모리에 모든 것을 갖지 않고 비교할 수있는 방법이나 파이썬 모듈이 있는지 알고 싶습니다. 감사합니다. –

답변

0

파이썬 사전은 메모리 부족 데이터를 위해 설계되지 않았습니다.

그러나 이에 대한 표준 라이브러리, 즉 shelve 모듈이 있습니다.