これがアイデアです。app1とapp2を(サブプロセスを使用して)開始する「メイン」のPythonスクリプトがあります。'main'スクリプトは、入力をapp1に送信し、結果をapp2に送信します(その逆も同様です)(メインスクリプトは、送信された内容を記憶する必要があるため、app1からapp2にパイプを送信できません)。
これがメインスクリプトです。
import subprocess
import time
def main():
prvi = subprocess.Popen(['python', 'random1.py'], stdin = subprocess.PIPE , stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
while 1:
prvi.stdin.write('131231\n')
time.sleep(1) # maybe it needs to wait
print "procitano", prvi.stdout.read()
if __name__ == '__main__':
main()
そしてこれは「random1.py」ファイルです。
import random
def main():
while 1:
inp = raw_input()
print inp, random.random()
if __name__ == '__main__':
main()
最初に、それが機能しているかどうかを確認するために、1つのサブプロセスだけで試しました。そして、そうではありません。'procitano'のみを出力し、そこで待機します。'prvi'からの出力を読み取るにはどうすればよいですか(communicate(を使用せずに)。これを使用すると、アプリが終了しますが、これは望ましくありません)。