gpt4 book ai didi

python - 使用太多内存在 python 中处理 XML 文件

转载 作者:行者123 更新时间:2023-11-28 23:00:16 25 4
gpt4 key购买 nike

我有一个 XML 文件,大约 30MB,里面有大约 300000 个元素。

我使用下面的代码来处理这个文件。

xmldoc=xml.dom.minidom.parse("badges.xml")

csv_out=open("badge.csv","w")

for badge in xmldoc.getElementsByTagName("row"):
some processing here
csv_out.write(line)

文件只有 30MB,但是当我在我的 MBP(10.7、8G RAM)上运行这个脚本时,它使用了将近 3GB 的内存。为什么这么简单的脚本和这么小的文件占用这么多内存?

最好的问候,

最佳答案

您需要切换到迭代解析器,它以 block 的形式处理 XML 语句,从而允许您在中间清理内存。 DOM 解析器一次性将整个文档加载到内存中。

标准库有一个 SAX parserElementTree.iterparse可供您选择的选项。

快速 iterparse 示例:

from xml.etree.ElementTree import iterparse

with open("badge.csv","w") as csvout:
for event, elem in iterparse("badges.xml"):
if event == 'end' and elem.tag == 'row': # Complete row tag
# some processing here
csv_out.write(line)
elem.clear()

注意 .clear() 调用;释放元素并将其从内存中删除。

关于python - 使用太多内存在 python 中处理 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12303423/

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