선반 모듈을 사용하여 몇 가지 사전을 저장하려고하지만 크기에 문제가 있습니다. 필자는 Python 3.5.2와 최신 쉘브 모듈을 사용합니다.Python 선반 모듈의 크기 문제
나는 단어 목록을 가지고 있으며 bigrams (문자 레벨)에서 단어로 맵을 만들고 싶다. 구조는 다음과 같습니다.
'aa': 'aardvark', 'and', ...
'ab': 'absolute', 'dab', ...
...
약 130 만 단어로 구성된 대용량 파일을 읽었습니다. 따라서 사전은 상당히 커집니다. 이 코드입니다 :
나는 일반 파이썬 사전을 사용하여이 코드를 실행self.bicharacters // part of class
def _create_bicharacters(self):
'''
Creates a bicharacter index for calculating Jaccard coefficient.
'''
with open('wordlist.txt', encoding='ISO-8859-1') as f:
for line in f:
word = line.split('\t')[2]
for i in range(len(word) - 1):
bicharacter = (word[i] + word[i+1])
if bicharacter in self.bicharacters:
get = self.bicharacters[bicharacter]
get.append(word)
self.bicharacters[bicharacter] = get
else:
self.bicharacters[bicharacter] = [word]
, 내가 문제로 실행하지 못했지만, 나는 또한 필요에 의한 프로그램의 나머지 부분에 메모리 리소스 이러한 종류의를 아끼지 수 꽤 큰 메모리 풋 프린트.
그래서 선반 모듈을 사용해 보았습니다. 그러나 shelve를 사용하여 위의 코드를 실행하면 디스크에 더 이상 메모리가 없기 때문에 잠시 후 프로그램이 중지되고 shelve db는 약 120GB이고 여전히 파일에서 1.3M 단어 목록의 절반도 읽지 못했습니다 . 여기서 내가 뭘 잘못하고 있니?
왜'pip'와 함께'shelve'를 설치 했습니까? 이것은 표준 라이브러리의 일부이며, 기본적으로 ['pickle'] (https://docs.python.org/3/library/pickle.html)과 ['dbm'] (https : // docs .python.org/3/library/dbm.html). 동일한 이름으로 된 [PyPI 패키지] (https://pypi.python.org/pypi/shelve)는 완전히 다른 것입니다. –
대신 데이터베이스를 사용하려면이 도구를 다시 작성해야합니다. [dbm 형식] (https://en.wikipedia.org/wiki/Dbm)은 그러한 대규모 데이터 세트에 정확히 최적화되어 있지 않습니다. –
@MartijnPieters 죄송합니다. 핏을 통해 설치하지 않았고 다른 것과 혼합했습니다. –