1
我正在嘗試編寫一個程序,該程序使用已排序字母的擱置數據庫作爲關鍵字,以及可以將它們作爲值創建的單詞列表。例如:擱置是否真的很慢,需要大量的內存,或者我做錯了什麼?
db['mnoo'] = ['moon', 'mono']
因此,我寫了一個函數,它接受一個文件名並將其加載到擱置中。第一部分,將文件轉換成與擱置的佈局相同的字典,但擱置部分需要很長時間。
我試着用~100k條目的字典,每個值都是一個列表。似乎每1000個輸入需要15-20秒,每個輸入似乎需要〜1kb的空間。這是否正常?
代碼:
def save_to_db(filename, shelve_in='anagram_db'):
dct = anagrams_from_list(process_file(filename))
with shelve.open(shelve_in, 'c') as db:
for key, wordlist in dct.items():
if not key in db:
db[key] = wordlist
else:
db[key].extend(wordlist)
編輯:只是一個快速澄清:在字典每個列表是約1-3個字,不宜過大
嗯,我明白了。因此,如果我已經有數據庫中的數據,並且想將它與新數據結合起來,那麼加載所有內容,進行更改並將其保存回來會更快?我實際上只是因爲我是Python新手,並且正在閱讀「think python」而使用擱置,並且在那裏使用它來進行一些練習。在將來可能不會再使用它:P。 – Nescio
取決於您正在更改的_much_數據的方式;沒有一條硬性規定。 –
貨架可以使用多個後端,如gdbm或bdb,只有後備pickle後端真的很慢。 – jtaylor