java - Popen 通信与 Popen stdin.write()

标签 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') 

对比

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 go home now' 传递给 java 引擎运行并获取输出。

接下来它会生成“他现在要回家了”,并且重复该过程。

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

最佳答案

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

关于java - Popen 通信与 Popen stdin.write(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216622/

相关文章:

python - 如何从另一个Python脚本重复运行一个Python脚本?

java - 是否存在一个集合的集合,其中集合的任何成员都可以寻址?

java - 并发合并队列和监听器

python - 按字典值对字典列表进行排序

python - Python 中的后台进程

python - 尝试使用 stdin : io. UnsupportedOperation 时在 Python 中出现错误:fileno

java - Android 打印框架 - 将自定义 pdf 静默打印到预定打印机

java - 如何使用 JAX-WS/JAXB 编码参数化类型?

python - eval、exec 和 compile 之间有什么区别?

python - 从字典列表中获取一定数量的项,其中键满足某个值