Я пытаюсь использовать подпроцесс. Открыть, чтобы позволить двум программам Python более или менее вести диалог. Я хочу иметь возможность отправлять входные данные от родителя к ребенку, получать ответ от ребенка, а затем на основе этого ответа отправлять новый ввод. subprocess.communicate () закрывает процесс после одного взаимодействия ввода-вывода. Можно ли оставить один и тот же подпроцесс открытым для нескольких операций ввода-вывода? В настоящее время мой код зависает.
Родительский код:
from __future__ import print_function
import subprocess
import sys
try:
p = subprocess.Popen(['python','childprocess.py'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=1,
universal_newlines=True)
except Exception as e:
print("Error: "+str(e))
sys.exit(-1)
p.stdin.write('This is the first input\n')
p.stdin.flush()
print(p.stdout.readline())
p.stdin.write('This is the second input\n')
print(p.stdout.readline())
Код ребенка:
input_one = raw_input()
print "Input One: ",input_one
input_two = raw_input()
print "Input Two: ",input_two
В этом случае я могу просто дать два входа и затем прочитать два выхода, но если я хочу иметь возможность использовать дочерний выход для информирования родительского ввода (например, гадатель чисел), могу ли я сделать это с подпроцесс?