這篇文章主要介紹了python併發編程多進程之守護進程原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考
守護進程
主進程創建子進程目的是:主進程有一個任務需要併發執行,那開啓子進程幫我併發執行任務
主進程創建子進程,然後將該進程設置成守護自己的進程
關於守護進程需要強調兩點:
其一:守護進程會在主進程代碼執行結束後就終止
其二:守護進程內無法再開啓子進程,否則拋出異常: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
'''
寫到這裏,給大家推薦一個資源很全的python學習聚集地,點擊進入,這裏有資深程序員分享以前學習
心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,
每天給大家講解python最新的技術,前景,學習需要留言的小細節