Вам действительно нужно хранить все данные из файла XML в памяти сразу?
Большинство (всех?) Библиотек XML позволяют выполнять итеративный анализ , что означаетчто вы храните в памяти только несколько узлов XML-файла , , а не весь файл .Это если вы сами не создаете строку, содержащую XML-файл без какой-либо библиотеки, но это немного безумно.В этом случае используйте библиотеку КАК МОЖНО СКОРЕЕ.
Конкретные примеры кода, представленные здесь , могут не относиться к вашему проекту, но учитывают несколько принципов, подтвержденных тестированием и lxml документация - при работе с данными XML, измеряемыми в гигабайтах или более:
- Использование стратегии итеративного анализа для пошаговой обработки больших документов.
- При поискеВесь документ в случайном порядке требуется, перейдите в индексированную базу данных XML.
- Будьте предельно консервативны в данных, которые вы выбираете.Если вас интересуют только определенные узлы, используйте методы, которые выбираются по этим именам.Если вам требуется синтаксис предиката, попробуйте один из доступных классов и методов XPath.
- Рассмотрите текущую задачу и уровень комфорта разработчика.Объектные модели, такие как objectify lxml или Amara, могут быть более естественными для разработчиков Python, когда скорость не учитывается. cElementTree быстрее, когда требуется только синтаксический анализ.
- Найдите время, чтобы выполнить даже простой сравнительный анализ.При обработке миллионов записей складываются небольшие различия, и не всегда очевидно, какие методы являются наиболее эффективными.
Если вам необходимо выполнять сложные операции с данными, зачемВы просто помещаете это в реляционную базу данных и оперируете данными оттуда?Это будет иметь лучшую производительность.