gpt4 book ai didi

使用 cElementTree.iterparse 解析 XML 的 Python 内存不足

转载 作者:IT老高 更新时间:2023-10-28 21:03:38 30 4
gpt4 key购买 nike

我的 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 内存不足,这没有多大意义。我实际存储的唯一内容是计数,一个整数。为什么会这样:

enter image description here

看到最后内存和 CPU 使用率突然下降了吗?那就是 Python 的崩溃。至少它给了我一个 MemoryError(取决于我在循环中还做了什么,它给了我更多随机错误,比如 IndexError)和一个堆栈跟踪而不是段错误。但是为什么会崩溃呢?

最佳答案

代码示例:

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

关于使用 cElementTree.iterparse 解析 XML 的 Python 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697710/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com