from subprocess import Popen, PIPE, STDOUT
fil = "\n" * 10
p = Popen(['python', 'prog.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
p.communicate("1\n2" + fil)[0]
Если будет ещё запрос (input), а он ничего не вернёт, то вылетит EOFError, так что я сделал переменную fil.
И оказывается он при таком запуске ничего не ждёт.
Кажется работает.
Только нужно точно расчитать сколько данных будет запрашиваться.
Если не работает, добавляем shell=True.
p = Popen(['python', 'prog.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT, shell=True)
Но всё равно при длительном взаимодействии: вопрос1 - ответ1, вопрос2 - ответ2 ... EOFError возникает и никак не получается взаимодействовать построчно.