python - Python子进程:来回传递多个输入/输出
问题描述
我正在尝试使用 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
在这种情况下,我可以只给出两个输入,然后读取两个输出,但是如果我希望能够使用子输出来通知父输入(例如数字猜测器),我可以用子进程来做到这一点吗?
解决方案
推荐阅读
- javascript - Spring boot自定义gson BEGIN_OBJECT但出现STRING错误
- sql - SQL Server 中点后的子字符串
- python-3.x - 无法使用 Python 拟合正态分布。scipy包缺陷?
- ruby-on-rails - `heroku run rake db:seed` 失败且没有错误;表在远程数据库中存在但为空
- java - 从 Activiti 工作流中检索所有用户任务
- pytorch - 如何找到 torch.nn.conv_transpose2d 和 max_unpool2d 的参数?
- java - docker中的内存使用超过了xmx控制或小于xms
- javascript - momentjs 不会按照指定的时区更改日期/时间
- c# - 身份确认电子邮件问题
- unity3d - Unity - 球弹跳