python并發(fā)編程多進程之守護進程原理解析
守護進程
主進程創(chuàng)建子進程目的是:主進程有一個任務(wù)需要并發(fā)執(zhí)行,那開啟子進程幫我并發(fā)執(zhí)行任務(wù)
主進程創(chuàng)建子進程,然后將該進程設(shè)置成守護自己的進程
關(guān)于守護進程需要強調(diào)兩點:
其一:守護進程會在主進程代碼執(zhí)行結(jié)束后就終止
其二:守護進程內(nèi)無法再開啟子進程,否則拋出異常:AssertionError: daemonic processes are not allowed to have children
如果我們有兩個任務(wù)需要并發(fā)執(zhí)行,那么開一個主進程和一個子進程分別去執(zhí)行就ok了,如果子進程的任務(wù)在主進程任務(wù)結(jié)束后,就沒有存在的必要了,那么該子進程應(yīng)該在開啟前就被設(shè)置成守護進程。主進程代碼運行結(jié)束,守護進程隨即終止
子進程還沒來得及開始就掛了
設(shè)置了守護進程 就是不給子進程運行
守護進程必須在開啟子進程前開啟
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("主") ''' 主 '''
開一個子進程是為了并發(fā)任務(wù), 這個子進程的任務(wù),在主進程死了,這個任務(wù)就沒有意義存在,這個子進程就應(yīng)該設(shè)置守護進程
守護進程練習(xí)題
在主進程代碼執(zhí)行完畢,只要出現(xiàn)打印主進程信息,p1就不會執(zhí)行或者死掉
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 '''
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于tf.nn.dynamic_rnn返回值詳解
今天小編就為大家分享一篇關(guān)于tf.nn.dynamic_rnn返回值詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實現(xiàn)方法,實例分析了Python根據(jù)pymongo不同版本操作ObjectId的技巧,需要的朋友可以參考下2015-05-05Python利用BeautifulSoup解析網(wǎng)頁內(nèi)容
當(dāng)今信息爆炸的時代,網(wǎng)絡(luò)上充斥著海量的數(shù)據(jù),而網(wǎng)絡(luò)爬蟲作為一種數(shù)據(jù)采集工具,扮演著至關(guān)重要的角色,BeautifulSoup 是一個Python庫,它可以從HTML或XML文件中提取數(shù)據(jù),本文介紹了Python如何利用BeautifulSoup解析網(wǎng)頁內(nèi)容,需要的朋友可以參考下2024-06-06python優(yōu)雅實現(xiàn)代碼與敏感信息分離的方法
這篇文章主要介紹了python優(yōu)雅實現(xiàn)代碼與敏感信息分離的方法,在flask中,python-dotenv 可以無縫接入項目中,只要你的項目中存在 .env 或者 .flaskenv 文件,他就會提示你是否安裝 python-dotenv,需要的朋友可以參考下2022-05-05Python實戰(zhàn)之IQ測試系統(tǒng)的實現(xiàn)
通常,智商測試測驗一個人在數(shù)字、空間、邏輯、詞匯、創(chuàng)造、記憶等方面的能力。本文將利用Python實現(xiàn)一個IQ測試系統(tǒng),感興趣的可以了解一下2022-09-09