gpt4 book ai didi

python - ElementTree iterparse 需要多长时间?

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:16 24 4
gpt4 key购买 nike

在回答另一个问题时,有人向我展示了以下教程,其中作者声称使用 iterparse 在 3 秒内解析了一个 ~100 MB 的 XML 文件:

http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/

我正在尝试解析一个大约 90 MB 的 XML 文件,并且我有以下代码:

from xml.etree.cElementTree import *
count = 0

for event, elem in iterparse('foo.xml'):
if elem.tag == 'identifier' and elem.text == 'bar':
count += 1
elem.clear() # discard the element

print count

这大约需要三十秒......甚至与我使用类似大小的文件、类似的算法和相同的包阅读的教程中报告的数量级不同。

有人可以告诉我我的代码可能有什么问题,或者我可能没有注意到我的情况和教程之间有什么区别吗?

我正在使用 Python 2.7.3。

附录:

我也在使用一台功能相当强大的机器,以防有人认为可能就是这样。

最佳答案

正如 TJD 所提到的,仅比较 XML 的大小可能不会提供很多信息。但是,我碰巧有相同结构但不同大小的文件:

79M 文件:

$ python -m timeit -n 1 -c 'from xml.etree.cElementTree import iterparse
count = 0
for event, elem in iterparse("..../QT20060217_S_18mix23-2500_01.mzML"):
if elem.tag.endswith("spectrum"): count += 1
elem.clear()
print count'
6126
6126
6126
1 loops, best of 3: 950 msec per loop

对于一个 3.8G 的文件timeit 的输出是:

1 loops, best of 3: 22.3 sec per loop

此外,与 lxml 进行比较:将第一行中的 xml.etree.cElementTree 更改为 lxml.etree 我得到:

对于第一个文件:每个循环 730 毫秒

对于第二个文件:每个循环 11.4 秒

关于python - ElementTree iterparse 需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250934/

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