我为我的工作创建了一个小工具,它解析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文件时我们都会使用越来越多的内存...
答案 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"
是否打印到您的控制台。