这个程序非常简单,递归地进入目录并提取一个元素。这些目录大约有1k大小,包含约200个0.5m的文件。 我发现它在一段时间后会消耗约2.5g的内存,这完全不能接受,脚本不是唯一的内存消耗者。我无法理解为什么它不释放内存。显式的删除操作也没有帮助。 有哪些技术需要考虑?
from lxml import etree
import os
res=set()
for root, dirs, files in os.walk(basedir):
for i in files:
tree = etree.parse(os.path.join(root,i), parser)
for i in tree.xpath("//a[@class='ctitle']/@href"):
res.add(i)
del tree
i
是什么类型的?你打算如何处理res
? - undefinedlxml.etree._ElementUnicodeResult
对象本身可能不占用太多内存,但由于您可以对它们执行.getparent()
操作,它们会保留对树的引用,这意味着 Python 无法对树进行垃圾回收。因此,从我的观察来看,在将它们添加到集合之前将它们转换为字符串应该有助于垃圾收集器完成其工作。 - undefined