1

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を使用するようにアドバイスされ、既にそれを実行しています。ただし、リストを一時的に削除して、後でリストを反復処理するときにメモリにロードする方法がわかりません。

どんな助けでも大歓迎です。追加情報が必要な場合はお知らせください。

4

0 に答える 0