вы используете case требует, чтобы вы использовали sax-парсер вместо dom, dom загружает все в память, sax вместо этого будет выполнять построчный анализ, и вы будете писать обработчики для событий по мере необходимости
это может быть эффективным, и вы сможете написать индикатор прогресса также
Я также рекомендую попробовать парсер expat, иногда это очень полезно
http://docs.python.org/library/pyexpat.html
для прогресса, используя саксофон:
когда саксофон читает файл постепенно, вы можете обернуть файл, который вы передаете, своим собственным и отслеживать, сколько было прочитано.
редактирование:
Мне также не нравится идея разделить файл самостоятельно и присоединиться к DOM в конце, так что вы лучше пишете свой собственный xml-парсер, я рекомендую вместо этого использовать sax-парсер
Мне также интересно, какова ваша цель чтения файла 1,5 гига в дереве DOM?
похоже, саксофону было бы лучше здесь