限られた RAM (~6 GB) で大きな XML データ ダンプ (18.5 GB) を解析しようとしています。各オブジェクトからいくつかのタグを取得し、それらのタグでハッシュテーブルを作成したいだけです。現在、iterparse (ファイル全体をメモリにロードできないため) と xpath (必要なタグを見つけるため) を使用しています。
これは可能ですか?
ここにサンプルがあります
context = etree.iterparse(StringIO(xml))
artistReleases = {}
for action, elem in context:
artistName = elem.xpath('/releases/release/artists/artist/name')
releaseName = elem.xpath('/releases/release/title')
i = 0
while i < len(artistName):
artist = artistName[i].text
release = releaseName[i].text
if artist in artistReleases.keys():
artistReleases[artist].append(release)
else:
artistReleases[artist] = release
i += 1
8 MB のファイルを実行するには、約 20 分かかります。1 か月以内に 18.5 GB を達成したいと考えています。:)