我正在尝试将 QPlaintextedit 小部件用作文本编辑器,到目前为止效果很好,使用它我可以输入大量文本,并且 UI 不会冻结或卡顿。我想我会突破界限,看看会发生什么。
基本要点是使用我的编辑器我可以编写伪代码,然后解析代码以查找错误。如果没有错误,解析会根据输入文本吐出一些 xml。最后,我得到了一个很好的描述文本的 xml 文档。本质上,我已经设法将伪代码转换为 xml 文件。
这工作得相当好,但编辑器中的文本越多,它使用的内存就越多。现在我设法将大约 750k 行文本粘贴到我的编辑器中,当需要解析它时,我首先读取文本,然后将整个文本发送到解析器。为此,我这样做:
editor_text=QPlainTextEdit.toPlainText()
这为我提供了编辑器中的所有文本,我可以将其发送到解析器,然后将其转换为 xml 文件(如果没有发现错误)
现在编辑器中有 750k 行文本,toPlainText()方法不能很好地工作,实际上我只是内存不足。
我的问题是我应该如何处理大量文本才能解析它。
我考虑过(未尝试过)的一件事是逐块(或逐行)读取文本,解析每一行并将其转换为 xml,但我仍然必须处理返回的 xml,将生成的 xml 保留为在解析整个编辑器文本之前,内存中的每一行/块仍然可能会耗尽内存
我无法想象这仅与 QPlainTextEdit 小部件有关,但通常当在单个文件中有大量“代码”/文本说 1M 甚至 10M 行“代码”时,如何阅读并解析所有 10M 行?
对于我的示例,我在 Windows 上使用 python 2.7 和 pyqt4.8