在回答另一个问题时,有人向我展示了以下教程,其中作者声称已使用 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
这大约需要 30 秒……甚至与我使用类似大小的文件、类似的算法和相同的包阅读的教程中报告的数量级不同。
有人可以告诉我我的代码可能有什么问题,或者我的情况和本教程之间可能没有注意到哪些差异?
我正在使用 Python 2.7.3。
附录:
我也在使用一台相当强大的机器,以防有人认为可能是它。