サブプロセスを処理するときのメモリ使用量を "バックグラウンド"で理解したいと思います。ここに簡単な例があります。Pythonでパイプされたサブプロセスstdoutから行を読み込むときのメモリ使用
版画「こんにちは」は、その後10Sと版画「世界」を待って、次のスクリプトtest.py
考える:次に
import sys
import time
print ("Hello")
sys.stdout.flush()
time.sleep(10)
print ("World")
次のスクリプトtest_sub.py
がサブプロセス「test.py」と呼びますが、標準出力にリダイレクト私はそれがサブプロセスの呼び出しをした後、それは「世界は」来るまで「こんにちは」その後、10秒を待って印刷しますtest_sub.py
実行したときに、私の質問は以下のようになり、この場合
import subprocess, time, os, sy
cmd = ["python3","test.py"]
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines = True)
for line in iter(p.stdout.readline, ''):
print("---" + line.rstrip())
:パイプは、その後、行ずつそれを読みますそれからiを印刷するt、待っている10の間に "こんにちは"に何が起こるのですか?それはtest_sub.py
が終了するまでメモリに格納されますか、それとも最初の繰り返しで捨てられますか?
これはこの例では問題にならないかもしれませんが、本当に大きなファイルを扱う場合はそうです。