Python readlines将始终阻止调用方

Python readlines将始终阻止调用方,python,Python,我正在阅读Mark Lutz编写的Python编程,我遇到了以下几点: 对于管道对象,迭代器的效果可能更有用 而不是完全避免将整个结果加载到内存中 once:readlines将始终阻止调用方,直到生成程序 已完全完成,而迭代器可能未完成 这是什么意思? 如果你考虑子进程。Popen < /代码>作为例子。如果调用一个向子流程.PIPE输出大量数据的命令,则调用proc.stdout.readlines()将等待命令完全完成 其中,如果您将iter中的行(proc.stdout.readline

我正在阅读Mark Lutz编写的Python编程,我遇到了以下几点:

对于管道对象,迭代器的效果可能更有用 而不是完全避免将整个结果加载到内存中 once:readlines将始终阻止调用方,直到生成程序 已完全完成,而迭代器可能未完成


这是什么意思?

如果你考虑<代码>子进程。Popen < /代码>作为例子。如果调用一个向
子流程.PIPE
输出大量数据的命令,则调用
proc.stdout.readlines()
将等待命令完全完成

其中,如果您将iter中的行(proc.stdout.readline,“”)与iter中的行一起使用


如果必须处理输出的每一行,则在输入时逐行处理会更有意义,使用
iter
可以执行相反的阻塞,直到命令使用
readlines
终止

在stdin上调用ReadLine函数时会发生什么情况?我认为它的意思是,如果调用ReadLine,则会获取内存中的整个项(文件),并且程序会“阻塞”,直到获取整个项为止。相反,如果使用迭代器,一次只能获取一个东西(/一行),因此不会将整个东西都放在内存中。这样做的一个副作用是,您不会在很长时间内阻止调用者,因为您一次只能获取较小的数据块。