我正在尝试使用python的subprocess
模块启动一个需要很长时间的java进程。
我实际上在做的是使用multiprocessing
模块启动新流程,并使用该流程,使用subprocess
模块运行java -jar
。
这很好用,但是当我启动新进程时,java进程会替换运行python Process
的python进程。我希望java
作为子进程运行,当启动新multiprocessing.Process
的进程死亡时,运行java
的进程也会死亡。
这可能吗?
感谢。
编辑:这里有一些代码来澄清我的问题:
def run_task():
pargs = ["java -jar app.jar"]
p = Popen(pargs)
p.communicate()[0]
return p
while(True):
a = a_blocking_call()
process = Process(target=run_task)
process.start()
if not a:
break
当执行while循环的进程到达run_task
行时,我希望运行java
的进程与正在运行break
的进程一起被终止。这可能吗?
答案 0 :(得分:0)
我认为你应该展示一些代码,不清楚你是如何一起使用子进程和多处理的。
从文档中看,子进程应该生成而不是替换新的Process-started进程。你确定没有发生吗?显示它的测试用例不会很好。
您可能会从Detach a subprocess started using python multiprocessing module
中获得一些提示