1
我想迭代地解析一個大的(186MB)XML文件。該文件本身只是一個複雜的MyNodeType節點列表。例如,Python cElementTree需要2GB的RAM來迭代地解析大文件
<MyNodeTypeList>
<MyNodeType>
...
</MyNodeType>
<MyNodeType>
...
</MyNodeType>
<MyNodeType>
...
</MyNodeType>
</MyNodeTypeList>
我試圖保持內存使用量低,通過反覆分析文件,但它似乎陷於巨大的30K左右的記錄慢下來,涉及到在92K停了下來。該過程也佔用了2GB左右在內存中,即使有簡單的代碼像下面這樣:
import xml.etree.cElementTree as ET
def main(argv):
it = ET.iterparse(argv[0])
count = 0
for (ev, el) in it:
if (ev == "end" and el.tag == "MyNodeType"):
count += 1
print count
if __name__ == "__main__":
main(sys.argv[1:])
有一些方法可以讓我保持的加工代碼到最低限度在內存使用方面?
工作!謝謝! –