python并發(fā)編程多進(jìn)程之守護(hù)進(jìn)程原理解析
守護(hù)進(jìn)程
主進(jìn)程創(chuàng)建子進(jìn)程目的是:主進(jìn)程有一個(gè)任務(wù)需要并發(fā)執(zhí)行,那開啟子進(jìn)程幫我并發(fā)執(zhí)行任務(wù)
主進(jìn)程創(chuàng)建子進(jìn)程,然后將該進(jìn)程設(shè)置成守護(hù)自己的進(jìn)程
關(guān)于守護(hù)進(jìn)程需要強(qiáng)調(diào)兩點(diǎn):
其一:守護(hù)進(jìn)程會(huì)在主進(jìn)程代碼執(zhí)行結(jié)束后就終止
其二:守護(hù)進(jìn)程內(nèi)無(wú)法再開啟子進(jìn)程,否則拋出異常:AssertionError: daemonic processes are not allowed to have children
如果我們有兩個(gè)任務(wù)需要并發(fā)執(zhí)行,那么開一個(gè)主進(jìn)程和一個(gè)子進(jìn)程分別去執(zhí)行就ok了,如果子進(jìn)程的任務(wù)在主進(jìn)程任務(wù)結(jié)束后,就沒(méi)有存在的必要了,那么該子進(jìn)程應(yīng)該在開啟前就被設(shè)置成守護(hù)進(jìn)程。主進(jìn)程代碼運(yùn)行結(jié)束,守護(hù)進(jìn)程隨即終止
子進(jìn)程還沒(méi)來(lái)得及開始就掛了
設(shè)置了守護(hù)進(jìn)程 就是不給子進(jìn)程運(yùn)行
守護(hù)進(jìn)程必須在開啟子進(jìn)程前開啟
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=('子進(jìn)程1',))
# 守護(hù)進(jìn)程必須在開啟子進(jìn)程前開啟
t.daemon = True
t.start()
print("主")
'''
主
'''
開一個(gè)子進(jìn)程是為了并發(fā)任務(wù), 這個(gè)子進(jìn)程的任務(wù),在主進(jìn)程死了,這個(gè)任務(wù)就沒(méi)有意義存在,這個(gè)子進(jìn)程就應(yīng)該設(shè)置守護(hù)進(jìn)程
守護(hù)進(jìn)程練習(xí)題
在主進(jìn)程代碼執(zhí)行完畢,只要出現(xiàn)打印主進(jìn)程信息,p1就不會(huì)執(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
'''
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)余弦相似度文本比較的示例
這篇文章主要介紹了python實(shí)現(xiàn)余弦相似度文本比較的示例,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
Python利用itchat庫(kù)向好友或者公眾號(hào)發(fā)消息的實(shí)例
今天小編就為大家分享一篇Python利用itchat庫(kù)向好友或者公眾號(hào)發(fā)消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
python標(biāo)準(zhǔn)庫(kù)模塊之json庫(kù)的基礎(chǔ)用法
json庫(kù)是處理JSON格式的Python標(biāo)準(zhǔn)庫(kù),json庫(kù)主要包括兩類函數(shù),操作函數(shù)和解析函數(shù),下面這篇文章主要給大家介紹了關(guān)于python標(biāo)準(zhǔn)庫(kù)模塊之json庫(kù)的基礎(chǔ)用法,需要的朋友可以參考下2022-06-06
python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)
這篇文章主要介紹了python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
python 將列表里的字典元素合并為一個(gè)字典實(shí)例
這篇文章主要介紹了python 將列表里的字典元素合并為一個(gè)字典實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
通過(guò)python 執(zhí)行 nohup 不生效的解決
這篇文章主要介紹了通過(guò)python 執(zhí)行 nohup 不生效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
Python OpenCV 圖像平移的實(shí)現(xiàn)示例
本篇博客學(xué)習(xí)OpenCV 中關(guān)于圖像平移的方法,核心學(xué)習(xí)到的方法是warpAffine,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06

