XML解析挂在大(但不是那么大)的文件上

时间:2016-12-07 19:37:52

标签: python xml memory

我正在使用python的优秀xml模块来处理我的一些xml文件。其中一个文件是250+ MB。解析时,它似乎挂起。运行top表明它正在慢慢填满我的记忆,然后开始交换,但是不会返回超过一个小时(此时我会终止进程并搜索SO)。

我正在盯着这个过程:

>>> import xml.etree.ElementTree as ET
>>> tree = ET.parse('some_xml_file.xml')

但是,就我的任何尝试而言都是如此。较小的文件工作正常,但是这个大文件正在破坏。

什么是我的记忆的所有(4 GB),以及如何避免这种情况?

1 个答案:

答案 0 :(得分:2)

xml.etree.ElementTree documentation记录了这一段:

  

如果你不介意你的应用程序阻止读取XML数据,但是   仍然希望有增量解析功能,看一看   在iterparse()当您阅读大型XML时,它非常有用   文档,不想完全保存在内存中。

考虑使用iterparse()以递增方式处理XML文件

另外,您应该考虑切换到lxml.etree,因为它通常更快,更适合内存,来源: