1
5
您是否考虑使用其他解析XML的方法?构建一个包含如此大的XML文件的树总是很慢而且占用大量内存。如果在内存中不需要整个树,那么基于流的解析将非常有用 很 更快。如果您习惯于基于树的XML操作,这可能会有点让人望而生畏,但它会带来巨大的速度提升(几分钟而不是几小时)。 |
2
5
您的用例要求您使用sax解析器而不是dom,dom加载内存中的所有内容,sax将执行逐行解析,您可以根据需要为事件编写处理程序 所以,这可能是有效的,你也可以写进度指标 我还建议您尝试使用expat解析器,因为它非常有用 http://docs.python.org/library/pyexpat.html 有关使用sax的进度:
编辑: 我还想知道您在DOM树中读取1.5Gig文件的目的是什么? 看起来萨克斯在这里会更好 |
3
3
我使用pulldomapi为PyGTK(而不是PyQt)提供了一些非常类似的东西。使用Gtk空闲事件(这样GUI就不会锁定)和Python生成器(保存解析状态)一次调用一点。
|
4
2
在末尾合并树将非常容易。您可以创建一个新的DOM,并基本上将各个树逐个附加到其中。这将使您能够对解析的进度进行非常精细的控制。如果需要的话,您甚至可以通过生成不同的进程来解析每个部分来并行化它。你只需要确保你智能地分割它(不在标签中间分裂)等等。 |
joshp · Pysides6列从设置向后跨距 2 年前 |
Reda El Hail · 使用PyQt6构建python容器 2 年前 |
HyperQBE · 如何在pyqt MessageBox中使用变量 6 年前 |