我有一個名爲MyScript的Python腳本(基於RHEL的unix類型),它有兩個函數,名爲A和B.我希望它們在不同的獨立進程中運行(分離B和A):故意在python中創建一個孤兒進程
- 開始腳本的MyScript
- 執行功能的
- 產生一個新的過程中,從功能的傳遞數據到B
- 雖然函數B運行時,繼續功能的
- 當功能A完成,即使B仍在運行,退出MyScript
我以爲我應該使用多處理來創建一個守護進程,但documentation表明這不是正確的用例。所以,我決定生成一個子進程和子進程(孩子的孩子),然後強制孩子終止。雖然這種解決方法似乎有效,但看起來確實很難看。
你能幫我把它變成pythonic嗎?子流程模塊是否有一個可以在函數上運行的方法?下面的示例代碼。
import multiprocessing
import time
import sys
import os
def parent_child():
p = multiprocessing.current_process()
print 'Starting parent child:', p.name, p.pid
sys.stdout.flush()
cc = multiprocessing.Process(name='childchild', target=child_child)
cc.daemon = False
cc.start()
print 'Exiting parent child:', p.name, p.pid
sys.stdout.flush()
def child_child():
p = multiprocessing.current_process()
print 'Starting child child:', p.name, p.pid
sys.stdout.flush()
time.sleep(30)
print 'Exiting child child:', p.name, p.pid
sys.stdout.flush()
def main():
print 'starting main', os.getpid()
d = multiprocessing.Process(name='parentchild', target=parent_child)
d.daemon = False
d.start()
time.sleep(5)
d.terminate()
print 'exiting main', os.getpid()
main()
您使用的是什麼操作系統? – Keith
@凱斯,剛剛更新了這個問題。類Unix。 – Peter