Popen与Popen stdin.write()沟通

时间:2015-08-26 01:31:30

标签: java python subprocess

我正在使用java引擎来处理一些内容。

我想知道这会占用不必要的资源吗?

command = 'some command to run my jar file'
p = subprocess.Popen(command, stdout = subprocess.PIPE, stdin = subprocess.PIPE)

比较

output,err = p.communicate('some string that is passed to the java jar') 

VS

p.stdin.write('some string that is passed to the java jar \n')
p.stdin.flush() 
output = p.stdout.readline()

为问题提供一些背景信息。字符串是动态生成的,因此我不想打开和关闭java应用程序生成字符串的所有内容。

例如:

我的python引擎创建一个字符串

'Hi i am going home now'传递给java引擎运行并获取输出。

接下来它产生'He is going home now'并重复该过程。

显然java程序写入System.out.println(output);

1 个答案:

答案 0 :(得分:1)

p.communicate()将根据the subprocess docs等待进程终止。除非您计划在每次通信时终止并重新启动Java进程,否则您可以使用第二种方法(读/写)。