我试图使用subproccess.Popen来允许两个Python程序或多或少地进行对话。我希望能够将父母的输入发送给孩子,接收孩子的响应,然后根据该响应发送新的输入。 subprocess.communicate()在一次I / O交互后关闭进程。是否可以为多个I / O保持相同的子进程?目前,我的代码挂了。
家长代码:
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
在这种情况下,我可以给出两个输入,然后读取两个输出,但是如果我想能够使用子输出来通知父输入(例如一个数字猜测器),我可以用子过程?
答案 0 :(得分:0)
您希望使用subprocess.Popen()函数,它可以使进程保持活动状态。
相关的S.O.问题可供参考: