Python でファイルのようなものを繰り返し処理することは、そのメソッドをループで呼び出すことと同じだといつも思っていreadlineましたが、今日、そうではない状況を見つけました。具体的には、私はPopen'd プロセスを持ってpいます
list(itertools.takewhile(lambda x: x != "\n",
p.stdout))
ハングします (おそらくp、入力を待機するためです。 と の両方stdinがstdoutPython プロセスへのパイプです)。
list(itertools.takewhile(lambda x: x != "\n",
iter(p.stdout.readline, "")))
誰かが違いを説明できますか?