これで1時間以上を検索して実験しましたが、ここでは「ここの文書」を作成して、行ごとに出力を得る方法はないようです:Python Popen _with_リアルタイム入出力制御
python = '''var="some character text"
print(var)
print(var)
exit()
'''
from subprocess import Popen, PIPE, STDOUT
import shlex
def run_process(command):
p = Popen(shlex.split(command), stdin=PIPE, stdout=PIPE, stderr=STDOUT)
p.stdin.write(python)
while True:
output = p.stdout.readline()
if output == '' and p.poll() is not None:
break
if output:
print output.strip()
rc=p.poll()
return rc
run_process("/usr/bin/python")
上記コードは無期限にハングします。はい、それは尾を食べる蛇ですが、それは概念を証明することだけでした。
問題は私のサブプロセスが実行に時間がかかり、何か問題があるかどうかを判断するために何時間も待たずに出力を見ることができる必要があるということです。何かヒント?ありがとう。
は、その 'stdin.readline'なく – rakesh
周りotherway' 'process.pollは()' 'であるべきあなたは確信していますエラー(2か所で) - その名前で変数がありません。 – jasonharper
わかりません。 p.stdin.write()呼び出しとp.stdout.readline()呼び出しがありますが、コードにstdin.readline()はありません。また、私はprocess.poll()を持っていません - 私はオブジェクトを持っていますポーリング()メソッドを持つp。 – signal7