在回答另一個問題時,有人給我看了下面的教程,其中作者聲稱使用了iterparse來解析〜100 MB的XML文件中的不足3秒:ElementTree iterparse需要多長時間?
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。
附錄:
我也是用相當強大的機器,如果有人認爲這可能是它。
我不認爲有由大小比較單獨的XML文件太大的價值。我相信那裏面的內部結構因素是複雜的。 – TJD
有多少產量?顯示輸出速度驚人地慢。 –
那麼在我的代碼片段中,顯然沒有任何東西(它仍然需要很長時間才能運行),但在代碼中我實際上正在嘗試使用,我禁用了所有輸出(特別是查看是否會減慢它)。事實並非如此。 – russell