2011-01-24 78 views
0

我试图启动一个java进程,这意味着需要很长时间,使用python的subprocess模块。使用子进程模块启动长时间运行的进程

我实际上在做的是使用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 

我想在运行run_task与运行java当执行while循环过程中到达break线的过程中一起被杀害的过程。这可能吗?

+0

也许我误解了这个问题,但为什么你需要的`multiprocessing`模块?您可以单独使用`subprocess`函数启动子进程。 – Philipp 2011-01-24 13:15:44

回答

0

我想你应该展示一些代码,目前还不清楚你如何一起使用子进程和多进程。

从文档看来,子流程看起来应该产生并且不会取代新的流程启动的流程。你确定没有发生?显示它的测试用例不会很好。

你可能会得到一些暗示出Detach a subprocess started using python multiprocessing module

相关问题