python 2.7 xml.etree.cElementTree内存使用

时间:2016-01-24 02:08:20

标签: xml python-2.7 memory celementtree

我为我的工作创建了一个小工具,它解析xml文件以查找元素的文本;示例代码:

import xml.etree.cElementTree as Etree


def open_xml():
    """
    Retrieves info from the xml file
    """
    try:
        tree = Etree.parse("xml_file.xml")
        text_to_find = tree.findtext(
            path=".//ns:some_element",
            namespaces={"ns": "http://something.com/something"})
        print text_to_find

    except IOError:
        print "No xml file found."

这是gui的一部分;我们从不关闭应用程序,它总是在专用计算机上运行。

如果我理解正确,python会在内存中创建一个表示xml树的对象。我的问题是:在我打印完信息后,是否需要清除该对象的内存?我担心每次解析xml文件时我们都会使用越来越多的内存...

1 个答案:

答案 0 :(得分:2)

不,就我所知,你不必担心。假定引用cElementTree实例的唯一变量是变量tree,那么在tree超出范围后很快就会删除该实例。要进行实验,您可以定义一个class,它会在删除时打印出来,以便您知道删除的时间,例如发布的here

class C:
    def __del__(self):
        print "delete object"

然后使用与tree变量在同一范围内声明的变量引用该类的实例:

def open_xml():
    ....
    try:
        tree = Etree.parse("xml_file.xml")
        c = C()
        ....

这样,您可以通过删除tree引用的实例来预测c引用的实例的删除,因为它们在同一范围内声明。现在看&看看"delete object"是否打印到您的控制台。