当我使用toString()方法进行序列化时,我的python lxml树会扩展到5GB。 Linux OS终止了该进程,因为它耗尽了内存。
从技术上讲,由于立即将其写入zip存档,因此无需在内存中创建完整的xml。
有没有一种方法可以将树序列化为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文件,然后将该文件写入存档。这不是一个很好的解决方法,可能也很慢。