Мое дерево Python lxml расширяется до 5 ГБ, когда я сериализую его с помощью метода toString ().ОС Linux убивает процесс, потому что ему не хватает памяти.
Технически нет необходимости создавать полный XML-файл в памяти, поскольку он сразу записывается в zip-архив.
Есть ли способ сериализации дерева как потока в zip-архив?
Вот мой текущий код (фрагмент):
import zipfile
from lxml import etree as ET
# Create a zipfile archive
zip_out = zipfile.ZipFile('outputfile.zip', 'w', compression=zipfile.ZIP_DEFLATED)
# serialize lxml etree to string and write to archive
zip_out.writestr('treefile.xml', large_etree.tostring())
Один из способов может бытьзаписать etree в файл tmp, а затем записать этот файл в архив.Не большой обходной путь и, вероятно, также медленный.