1

我正在尝试使用 Genshi 模板生成 XML 文件。由于文件大约 100MB 并且我的可用内存很小,我尝试通过不加载数据而是使用 python 生成器来优化我的代码。

但是,使用

tpl = MarkupTemplate("<template_xml/>")
stream = tpl.generate(data=lots_of_data_generator)
with open('file.xml', 'w') as fp:
    for chunk in stream.serialize():
        fp.write(chunk)

仍然占用大量内存,根据分析器,这发生在第二行。Genshi文档指出在流上调用 serialize() 会返回生成器而不是加载的字符串,我认为它会即时返回值,而不是全部加载到内存中。这是不正确的想法吗?有没有办法不使用模板使用这么多内存?

4

0 回答 0