从标准输入读取,内存使用最小化

3 投票
2 回答
11407 浏览
提问于 2025-04-16 01:23

我正在尝试在Python中创建一个逐行过滤器。不过,stdin.readlines()会在开始处理之前把所有行都读进来,这样会导致Python内存不足(MemoryError)。

我该如何让内存中只保留一行呢?

我写的代码是:

for line in sys.stdin.readlines():
    if( filter.apply( line ) ):
        print( line )

(注意:我使用的是2.6版本)

2 个回答

2

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能不太好用,或者出现了错误。这种情况下,大家通常会去一个叫做StackOverflow的网站上寻求帮助。

在这个网站上,用户可以提问,也可以回答别人的问题。很多时候,其他程序员会分享他们的经验和解决方案,帮助提问者解决问题。

总之,StackOverflow是一个非常有用的地方,程序员们可以在这里互相学习和解决问题。

import sys
while 1:
    line = sys.stdin.readline()
    if not line:
        break
    if (filter.apply(line)):
        print(line)
13
for line in sys.stdin:
    ...

或者在一个循环里调用 .readline()

撰写回答