使用Expat一次控制read()的字节数

时间:2011-10-31 12:28:00

标签: python xml performance expat-parser

我正在使用Python的Expat解析一些XML(通过调用parser = xml.parsers.expat.ParserCreate()然后将相关的回调设置为我的方法)。

似乎当Expat调用read(nbytes)来返回新数据时,nbytes总是为2,048。我有很多XML需要处理,并怀疑这些小的read()会使整个过程变得相当慢。作为参考,我看到运行Windows 7的Intel Xeon X5550,2.67 GHz的吞吐量大约为9 MB / s。

我已尝试设置parser.buffer_text = Trueparser.buffer_size = 65536,但Expat仍在调用read()方法,参数仅为2,048。

是否可以增加这个?

1 个答案:

答案 0 :(得分:2)

你在谈论xmlparse.ParseFile方法,对吧?

不幸的是,不,该值在pyexpat.c中被硬编码为BUF_SIZE = 2048。