0

我编写了以下代码来从 Open Street Map 读取多伦多的 XML/OSM 数据并获取所有邮政编码的列表。

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import iterparse

file = 'sample_map.osm'

for event, elem in iterparse(file): 
    nodes = elem.findall('node')
    for oneN in nodes:
        try:        
            tags = oneN.findall('tag')
            for oneTag in tags:
                if oneTag.attrib['k'] == 'addr:postcode':
                    print (oneTag.attrib['v'])
        except Exception as e:
            pass
        oneN.clear()

虽然代码在 1 秒内从包含样本数据的 9 MB 文件中输出结果,但当我在包含整个多伦多(1.15 GB)数据的文件上朗姆酒时,它会占用整个 PC 内存并永远占用。

我假设使用 iterparse 和 oneN.clear() 应该在运行主循环时释放我的内存。有人可以指导我我做错了什么吗?TIA

4

0 回答 0