【发布时间】:2011-06-14 11:32:39
【问题描述】:
我正在尝试使用 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 循环的进程到达 break 行时,我希望运行 run_task 的进程与运行 java 的进程一起被杀死。这可能吗?
【问题讨论】:
-
也许我误解了这个问题,但你为什么需要
multiprocessing模块?您可以单独使用subprocess函数启动子进程。 -
我需要启动新进程,然后继续运行while循环来启动新进程。
标签: python process subprocess multiprocessing