首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python内存不足使用cElementTree.iterparse解析XML

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

Stack Overflow用户
提问于 2011-10-08 23:12:27
回答 1查看 13.2K关注 0票数 22

下面是我的XML解析函数的简化版本:

代码语言:javascript
复制
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)和堆栈跟踪,而不是段错误。但是为什么它会崩溃呢?

EN

回答 1

Stack Overflow用户

发布于 2012-11-07 09:00:41

代码示例:

代码语言:javascript
复制
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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7697710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档