我想使用擱置模塊來存儲幾個字典,但是,我遇到了大小問題。我使用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]
當我跑了使用普通的Python字典這段代碼,我沒有碰到的問題,但我不能放過這些類型的內存資源由於程序的其餘部分也有相當大的內存佔用。
所以我嘗試使用擱置模塊。但是,當我使用shelve運行上面的代碼時,由於磁盤上沒有更多內存,程序會在一段時間後停止,所創建的shelve db大約爲120GB,並且它仍然沒有讀取文件中的1.3M字列表的一半。我在這裏做錯了什麼?
爲什麼你用'pip'安裝'shelve'?它是標準庫的一部分,它基本上是['pickle'](https://docs.python.org/3/library/pickle.html)和['dbm'](https:// docs .python.org/3 /庫/ dbm.html)。同名的[PyPI包](https://pypi.python.org/pypi/shelve)是完全不同的東西。 –
您可能想重新使用此工具來使用數據庫; ['dbm'格式](https://en.wikipedia.org/wiki/Dbm)並未針對此類大型數據集進行完全優化。 –
@MartijnPieters對不起,沒有通過點安裝,與其他東西混合。 –