我正在嘗試使用字典爲我的抓取工具編制索引網頁,並且遇到了一些有趣的和內存問題。字典查詢時間
我創建一個字典索引(格式:關鍵字:[爲url1,url2 URL3,...]),我將用它來跟蹤哪些頁面包含哪些單詞。當我收集的網頁,我使用功能add_page_to_index()
def add_page_to_index(self, url):
for keyword in url.get_text().split():
self.add_to_index(keyword, url)
def add_to_index(self, keyword, url):
for word in self.index:
if word == keyword:
if url not in self.index[word]:
self.index[word].append(url)
return
# not found, add new keyword to index
self.index[keyword] = [url]
此代碼一直擔任我的比較好(我知道它有性能問題,但效率不的本質爲這個項目),但是當我改變add_to_index()到這個:
def add_to_index(self, keyword, url):
if keyword in self.index:
self.index[keyword].append(url)
else: # not found, add new keyword to index
self.index[keyword] = [url]
突然python的內存使用率skyrockets(我最終得到一個MemoryError)。這是我的代碼問題還是有其他解釋?
注意,我是一個高中生,所以我不一定有最廣泛的編程背景。
謝謝!
編輯:改爲我原來的。
奇怪的存儲器也生長較快 - '指數= {} '在'索引'字之前'將保證沒有任何事情可以完成。您是否想將該行添加到add_to_index函數之外的某個位置作爲全局變量? – Amadan
在這兩種情況下,'add_to_index'都會創建一個新字典,然後丟棄它。這個功能的重點是什麼? –
'word'來自你的第二個代碼段? – miku