我正在解析一个大小约为 9 GB 的非常大的 XML 文件。我已经尝试过这种.iterparse
方法,根据我收集到的信息,这是完成这项任务的推荐方法。但是,这似乎需要太长时间。现在,我正在尝试实现一种多处理方法,尝试在不同的进程中解析感兴趣的元素。
我相信过去可以做到.iterparse('path_to_file.xml, events=("start", "end"), tag='some_tag)
,但看起来不再支持了。
所以,我想出的方法是这样的,
root = ET.parse('path_to_file.xml').getroot()
for element in root.iter('some_tag'):
# do something
有没有更好的方法来解决这个问题?据我所知,这是一个内存密集型操作。
如果没有其他方法可以做到这一点,有没有办法在使用这种方法时清除内存?就像我们element.clear()
使用.iterparse
?