ned*_*ned 5 python memory pyparsing
是否有可能告诉pyparsing不存储ParseResults或手动丢弃它们?
我正在解析一个大的项目文件,并且可以通过解析操作对每个项目进行所有后处理.因此,只要一个项目被解析,我就不再需要它的ParseResult了,并希望能够丢弃它,因为我正在达到我所在机器的内存限制.
您是否在解析令牌时使用解析操作来处理令牌?如果是这样,您可以使用 del 删除已解析令牌的内容:
def parseActionThatDeletesTheParsedTokens(tokens):
# ...
# do something interesting with the tokens
# ...
# delete the contents of the parsed tokens
del tokens[:]
Run Code Online (Sandbox Code Playgroud)
或者您可能只想使用scanString而不是parseString. 而不是这个:
OneOrMore(blockOfText).parseString(bigHonkingString)
Run Code Online (Sandbox Code Playgroud)
做:
for tokens, matchstart, matchend in blockOfText.scanString(bigHonkingString):
# do stuff with the tokens
Run Code Online (Sandbox Code Playgroud)
scanString返回一个生成器,该生成器生成 3 元组,其中包含匹配的标记、每个连续匹配的起始位置和结束位置。您可以处理每个已解析的标记集,然后当您继续处理下一组标记时,旧的标记集将被自动丢弃。我认为这可能是最简单的方法,对程序的更改最少。
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |