Управление количеством байтов read () одновременно с Expat - PullRequest
0 голосов
/ 31 октября 2011

Я анализирую некоторый XML, используя Expat в Python (вызывая parser = xml.parsers.expat.ParserCreate() и затем устанавливая соответствующие обратные вызовы для моих методов).

Кажется, что когда Expat вызывает read(nbytes) для возврата новых данных, nbytes всегда 2,048.У меня достаточно много XML для обработки, и я подозреваю, что эти маленькие read () делают весь процесс довольно медленным.Для справки: на Intel Xeon X5550, 2,67 ГГц под управлением Windows 7 я вижу пропускную способность около 9 МБ / с.

Я пытался установить parser.buffer_text = True и parser.buffer_size = 65536, но Expatвсе еще вызывая метод read() с аргументом всего 2048.

Возможно ли увеличить это?

1 Ответ

2 голосов
/ 01 ноября 2011

Вы говорите о методе xmlparse.ParseFile, верно?

К сожалению, нет, это значение жестко закодировано как BUF_SIZE = 2048 в pyexpat.c.

...