下面是我的XML解析函数的简化版本:
import xml.etree.cElementTree as ET
def analyze(xml):
it = ET.iterparse(file(xml))
count = 0
for (ev, el) in it:
count += 1
print('count: {0}'.format(count))
这会导致Python耗尽内存,这没有多大意义。我实际存储的唯一东西是计数,一个整数。它为什么要这样做:
看到最后内存和CPU使用率突然下降了吗?这就是Python的惊人崩溃。至少它给了我一个段错误(取决于我在循环中做了什么,它给了我更多的随机错误,比如IndexError
)和堆栈跟踪,而不是段错误。但是为什么它会崩溃呢?
发布于 2012-11-07 09:00:41
代码示例:
import xml.etree.cElementTree as etree
def getelements(filename_or_file, tag):
context = iter(etree.iterparse(filename_or_file, events=('start', 'end')))
_, root = next(context) # get root element
for event, elem in context:
if event == 'end' and elem.tag == tag:
yield elem
root.clear() # preserve memory
https://stackoverflow.com/questions/7697710
复制相似问题