在Python中管理数据密集型操作中的内存

时间:2013-07-16 02:56:48

标签: python xml parsing memory-management large-files

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

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

cElementTree允许我迭代地解析innerTag。因此,我可以通过一个innerTag解析后清除它,我可以从内存中清除它,为新的innerTag让路。

到目前为止一切顺利。

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

resultList = []

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

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

我被建议使用 del 来解析我在解析时使用的所有临时变量。然而,我不明白我如何 del 列表暂时只是在我迭代列表时才加载到内存中。

非常感谢任何帮助。如果需要任何其他信息,请与我们联系。

0 个答案:

没有答案