基本上,正如标题所说,我需要将一个进程的输出发送到两个进程的输入。下面是一个简单的代码示例:
from subprocess import Popen, PIPE
input = Popen(['python', 'input.py'], stdout = PIPE)
proc1 = Popen(['python', 'print.py'], stdin = input.stdout)
proc2 = Popen(['python', 'print.py'], stdin = input.stdout)
proc1.communicate()
proc2.communicate()
当这个代码运行时,proc1
从输入进程中获取输入,因此proc2
无法获取信息。你知道吗
你不能这样做。您只能通过管道将输出传输到一个进程,因为管道会消耗数据。你知道吗
但是您可以读取进程的所有输出,并使用此输出作为
communicate
的参数运行其他进程。你知道吗显然,这不会并行运行,除非同时执行
proc1
&;proc2
Popen
调用。第一个进程必须首先完全运行。你知道吗另一种可能是不使用
communicate
就向两个进程提供输入:在这种情况下,一切都是并行的。每次从第一个进程产生一个输出时,它都会实时地反馈给两个进程。你知道吗
现在意识到这个问题是Python: Redirect stdout of a subprocess to stdin of 2 or more subprocesses的重复。答案可能太适合这个问题,太复杂了。把那个留在这里。你知道吗
相关问题 更多 >
编程相关推荐