从标准输入读取,内存使用最小化
我正在尝试在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()
。