我发现很多帖子解释了如何使两个python脚本进行通信,大多数情况下是通过使用subprocess
包进行的。我需要做同样的事情,但是使用n
脚本。
为简化我的案例,我有三个Python脚本(master,slave_1,slave_2),应与stdin
和stdout
进行通信。通信应该由第四个脚本(协调器)处理。
我要实现的目标:
# master.py
print('M')
for _ in range(6):
value = input() + 'M'
print(value)
# slave_1.py
print(input() + '1')
# slave_2.py
print(input() + '2')
按照上图,我希望orchestrator.py
在运行时输出'M1M2M1M2M1M2'。
目前,我尝试使用subprocess
,但是遇到很多问题,例如卡在stdout.readline()
上。这是我的orchestrator.py
的一个非常简单的示例。
import subprocess
master = subprocess.Popen(['python', 'master.py'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
slave_1 = subprocess.Popen(['python', 'slave_1.py'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
slave_2 = subprocess.Popen(['python', 'slave_2.py'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
for _ in range(3):
slave_1.stdin.write(master.stdout.readline())
master.stdin.write(slave_1.stdout.readline())
slave_2.stdin.write(master.stdout.readline())
master.stdin.write(slave_2.stdout.readline())
有什么想法吗?
我应该精确地说,我既不能更改主密码又不能更改从密码。