辞書を使用してクローラーの Web ページのインデックスを作成しようとしていますが、いくつかの興味深いメモリの問題が発生しています。
どのページにどの単語が含まれているかを追跡するために使用するインデックス (形式: キーワード:[url1, url2, url3, ...]) 用の辞書を作成しています。Web ページを収集するときは、関数 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 のメモリ使用量が急増しました (最終的には MemoryError が発生します)。これは私のコードの問題ですか、それとも別の説明がありますか?
私は高校生なので、必ずしもプログラミングの経験が豊富であるとは限りません。
ありがとう!
編集:オリジナルに変更しました。