1

限られた 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 を達成したいと考えています。:)

4

0 に答える 0