2011-01-24 80 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

相關問題