2016-09-02 45 views
0

我想要實現的: 我希望我的主進程產生另一個獨立的python進程。 像:Python即使主進程退出也可以產生運行的後臺進程?

for i in range(2): 
    p = proces() 
    p.start() 

sys.exit(0) 

我的子進程應該因爲一時在後臺運行做一些任務:) ,如果我用產卵庫multiprocessing的過程,然後關閉我的主要腳本這些進程也退出。

+0

[啓動一個完全獨立的進程]可能的重複(http://stackoverflow.com/questions/27624850/launch-a-completely-independent-process) – Flippym

+0

我曾經用wxpython製作了一個服務器程序。關閉wxpython窗口後,服務器繼續運行。你是這個意思嗎 ? – Rockybilly

+0

是這樣的@Rockybilly –

回答

0
import time 

import multiprocessing 

import sys 


def run_forever(): 
    print "ENTERED SUBPROCESS" 
    while True: 
     print "HELLO from subprocess" 
     time.sleep(2) 
    print "GOODBYE SUBPROCESS" 


if __name__ == "__main__": 
    print "STARTING IN MAIN" 
    multiprocessing.Process(target=run_forever).start() 
    time.sleep(1) 
    print "LEAVING MAIN PROG" 
    sys.exit() 

結果如下輸出

STARTING IN MAIN 
ENTERED SUBPROCESS 
HELLO 
LEAVING MAIN PROG 
HELLO 
HELLO 
HELLO 
HELLO 
HELLO 
... 
粗的

你可能有一個新的問題,現在(即你不真的想run_forever永遠跑......沒有辦法,現在退出此過程...)

+0

是的,但如果我關閉控制檯等,我的進程也關閉(任務管理器中沒有python) –

+0

如果關閉shell然後是的,進程停止...這是什麼不同你問......技巧是以不同的方式觸發它(例如,使用cron或Windows調度程序來調度它),或者使用類似http://stackoverflow.com/questions/32404/is-it的方式運行它作爲「windows服務」 - 如果可能的話 - 可以運行一個python-script-as-a-service-in-windows-if-how ......但底線是操作系統將關閉與shell相關的任何子進程是關閉的(這是操作系統,而不是python特有的) –

相關問題