Я работаю над проектом, который должен анализировать очень большой файл XML (около 10 ГБ). Поскольку время процесса действительно велико (около суток), возможно, мой код завершится в середине процесса; поэтому я хочу сохранить статус своего кода время от времени, а затем иметь возможность перезапустить его с последней точки сохранения.
Есть ли способ запустить (перезапустить) SAX-парсер не с начала XML-файла?
П.С .: Я программирую на Python, но решения для Java и C ++ также приемлемы.
Не совсем уверен, ответит ли это на ваш вопрос, но я бы выбрал другой подход. 10 ГБ — это НЕ ТОЛЬКО много данных, поэтому вы можете реализовать двухфазный анализ.
Фаза 1 состояла в том, чтобы разбить файл на более мелкие куски на основе некоторого тега, чтобы в итоге вы получили более мелкие файлы. Например, если ваш первый файл A.xml
Вы разделили это A_0.xml
, A_1.xml
и т.п.
Фаза 2 будет действительно тяжело поднимать каждый патрон, так что вы вызываете его на A_0.xml
затем после этого A_1.xml
и т. д. Затем вы можете перезапустить чанк после выхода вашего кода.