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)
プロファイラーによると、これは 2 行目で発生します。Genshi docは、ストリームで serialize() を呼び出すと、ロードされた文字列ではなくジェネレーターが返されると述べています。これは間違った考え方ですか?テンプレートで大量のメモリを使用しない方法はありますか?