守護進程
主進程創建子進程目的是:主進程有一個任務需要并發執行,那開啟子進程幫我并發執行任務
主進程創建子進程,然后將該進程設置成守護自己的進程
關于守護進程需要強調兩點:
其一: 守護進程會在主進程代碼執行結束后就終止
其二: 守護進程內無法再開啟子進程,否則拋出異常:AssertionError: daemonic processes are not allowed to have children
如果我們有兩個任務需要并發執行,那么開一個主進程和一個子進程分別去執行就ok了,如果子進程的任務在主進程任務結束后,就沒有存在的必要了,那么該子進程應該在開啟前就被設置成守護進程。主進程代碼運行結束,守護進程隨即終止
子進程還沒來得及開始就掛了
設置了守護進程 就是不給子進程運行
守護進程必須在開啟子進程前開啟
from multiprocessing import Process import time def task(name): print("%s is running" % name) time.sleep(3) print("%s is done" % name) if __name__ == "__main__": t = Process(target=task, args=('子進程1',)) # 守護進程必須在開啟子進程前開啟 t.daemon = True t.start() print("主") ''' 主 '''
開一個子進程是為了并發任務, 這個子進程的任務,在主進程死了,這個任務就沒有意義存在,這個子進程就應該設置守護進程
守護進程練習題
在主進程代碼執行完畢,只要出現打印主進程信息,p1就不會執行或者死掉
from multiprocessing import Process import time def foo(): print(123) time.sleep(1) print("end123") def bar(): print(456) time.sleep(3) print("end456") if __name__ == '__main__': p1=Process(target=foo) p2=Process(target=bar) p1.daemon=True p1.start() p2.start() print("main-------") ''' main------- end456 '''
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
