Python でcElementTreeを使用して、非常に大きな XML ファイル (サイズは 50Mb から 1Gb までさまざま) を解析しています。次のサンプル xml ファイルについて考えてみましょう。
<rootTag>
<innerTag>...</innerTag>
<innerTag>...</innerTag>
<!-- repeat a large number of times -->
<innerTag>...</innerTag>
</rootTag>
cElementTree を使用すると、innerTag を繰り返し解析できます。したがって、1 つの innerTag を解析した後、それをメモリからクリアして、新しい innerTag に道を譲ることができます。
ここまでは順調ですね。
私の解析では、関心のある特定の innerTags を識別し、その後、含まれている情報の一部を Python リストに格納することになっています。
resultList = []
#Logic for each innerTag
if condition == True:
resultList.append(usefulInfo) #some object
ここでの問題は、リストがメモリに保持されるため、オブジェクトが追加されるとリストが枯渇することです。
解析中に使用したすべての一時変数にdelを使用するようにアドバイスされ、既にそれを実行しています。ただし、リストを一時的に削除して、後でリストを反復処理するときにメモリにロードする方法がわかりません。
どんな助けでも大歓迎です。追加情報が必要な場合はお知らせください。