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

