在Python中运行Concurrent .jar进程

时间:2014-09-23 15:41:16

标签: java python concurrency jar

我想从Python脚本中调用两个.jar文件。但是,在我调用第一个jar之后,终端就位,并且在服务器运行之后不会处理任何事情。服务器启动正常,但我想启动另一个将运行的进程,直到我要求它们停止。

我在寻找可能的解决方案时遇到了麻烦,因为我不确定要使用什么术语。

from subprocess import call 
import glob 
import sys 

h2 = glob.glob("h2*.jar")
reasoner = glob.glob("reasoner*.jar")

h2 = h2.pop()
reasoner = reasoner.pop()

call(["java", "-jar", h2, "-tcp"]) # Any call commands after this point don't execute

1 个答案:

答案 0 :(得分:0)

使用等待子流程终止的subprocess.Popen代替subprocess.call

from subprocess import Popen

...

Popen(["java", "-jar", h2, "-tcp"])

仅供参考,Python documentation是一个值得关注的地方,尤其是subprocess module documentation这个特定问题。


<强>更新

如果您想在使用Popen时明确等待子流程,请保存对Popen对象的引用并使用wait方法:

proc = Popen(["java", "-jar", h2, "-tcp"])
# Do something else ..
proc.wait()  # block execution until the sub-process terminate.