我正在尝试迭代解析一个大的(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:])
就内存使用而言,有什么方法可以将处理代码保持在最低限度?