大きな(186MB)XMLファイルを繰り返し解析しようとしています。ファイル自体は、複雑なMyNodeTypeノードの単なるリストです。例えば、
<MyNodeTypeList>
<MyNodeType>
...
</MyNodeType>
<MyNodeType>
...
</MyNodeType>
<MyNodeType>
...
</MyNodeType>
</MyNodeTypeList>
ファイルを繰り返し解析することでメモリ使用量を低く抑えようとしていますが、30kレコード前後で大幅に遅くなり、92kで停止するようです。以下のような単純なコードでも、このプロセスはメモリ内で約2GBを消費します。
import xml.etree.cElementTree as ET
def main(argv):
it = ET.iterparse(argv[0])
count = 0
for (ev, el) in it:
if (ev == "end" and el.tag == "MyNodeType"):
count += 1
print count
if __name__ == "__main__":
main(sys.argv[1:])
メモリ使用量の観点から処理コードを最小限に抑える方法はありますか?