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

发布于 2024-12-12 20:37:51 字数 441 浏览 1 评论 0原文

我正在使用 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。

这个可以增加吗?

I'm parsing some XML using Python's Expat (by calling parser = xml.parsers.expat.ParserCreate() and then setting the relevant callbacks to my methods).

It seems that when Expat calls read(nbytes) to return new data, nbytes is always 2,048. I have quite a lot of XML to process, and suspect that these small read()s are making the overall process rather slow. As a point of reference, I'm seeing throughput around 9 MB/s on an Intel Xeon X5550, 2.67 GHz running Windows 7.

I've tried setting parser.buffer_text = True and parser.buffer_size = 65536, but Expat is still calling the read() method with an argument of just 2,048.

Is it possible to increase this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软糯酥胸 2024-12-19 20:37:51

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

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

You're talking about the xmlparse.ParseFile method, right?

Unfortunately, no, that value is hardcoded as BUF_SIZE = 2048 in pyexpat.c.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文