前提・実現したいこと
初歩的な質問かもしれませんが、調べても自己解決出来なかったため質問させていただきます。
Pythonから別のプログラムを起動してログ(標準出力)を取得するため、下記のようなプログラムを用意したのですがいくつか分からない点があります。
python
1command = ['./program'] 2P_PATH = '/home/user/デスクトップ/NewFolder' 3 4prco = subprocess.Popen(command, cwd=P_PATH, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 5 6for line in prco.stdout.readline: 7 print(line.rstrip().decode("utf8")) 8 9print("finish")
-
変数
prco
にメモリアドレスらしきものが代入されていたのですが、subprocess
で起動したプロセスのメモリアドレスでしょうか? -
prco.stdout.readline
をfor
で回すとログが一行ずつ出力されるのですが、内部はどのようになっているのですか?(なにかしらをイテレータで処理していると思うのですが...) -
subprocess
で起動したプロセスが終了しないとfor
ループから抜け出せないのですが、非同期でログを出力することはできますか?(async
などで別の処理と並行して出力したいです)
asynce for
を使えば実現出来そうな気もするのですが、仕様がよく分からず困っています。
Python、Linux系OS初心者なので細かいところまで解説していただけると幸いです。
※理解しきれていない事が多いので不明な点を指摘して頂けると修正致します。
環境
Python 3.6.9
Ubuntu 18.04.4 LTS
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/22 00:42