1

我正在使用 Python 中的cElementTree解析非常大的 XML 文件(大小从 50Mb 到 1Gb 不等)。让我们考虑以下示例 xml 文件:

 <rootTag>
   <innerTag>...</innerTag>
   <innerTag>...</innerTag>
   <!-- repeat a large number of times -->
   <innerTag>...</innerTag>
 </rootTag>

cElementTree 允许我迭代地解析 innerTag。这样,我可以在解析完一个innerTag后将其从内存中清除,为新的innerTag让路。

到目前为止,一切都很好。

对于我的解析,我应该识别某些感兴趣的 innerTags,然后将一些包含信息存储到 python 列表中。

resultList = []

#Logic for each innerTag
if condition == True:
  resultList.append(usefulInfo) #some object

这里的问题是,由于列表保存在内存中,它会随着更多对象的添加而耗尽。

有人建议我对我在解析时使用的所有临时变量使用del并且已经这样做了。但是,我不明白如何临时删除列表,以便稍后在遍历列表时加载到内存中。

非常感谢任何帮助。让我知道是否需要任何其他信息。

4

0 回答 0