学习笔记(18):Python网络编程并发编程-守护进程
生活随笔
收集整理的這篇文章主要介紹了
学习笔记(18):Python网络编程并发编程-守护进程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
立即學習:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu
守護進程(了解)
?
1.概念:守護進程是主進程在創(chuàng)建子進程的時候,將子進程設置成守護自己的進程,等主進程結(jié)束后,不管子進程的狀態(tài)是怎樣的,都會立馬在主進程結(jié)束后結(jié)束
?
2.應用(個人理解):假設主進程是打開了一個瀏覽器,子進程是所有的瀏覽器上打開的標簽頁,只要瀏覽器關閉了,標簽頁也會跟著全部關閉!這理解是否正確?在標簽頁中似乎還可以運行子進程,這與下面3(1)不符
?
3.強調(diào):
1)守護進程必須在子進程開啟前設置,否則會報錯
p.daemon()
......def task(name):print('子進程結(jié)束')......if __name__ == '__main__':p = process(target = task , args = ('子進程1',))p.daemon = Truep.start()print("主進程結(jié)束")#運行結(jié)果:主進程結(jié)束#運行完主進程后,即運行完代碼后,子進程來不及運行就已經(jīng)隨著主進程的結(jié)束而結(jié)束了,因此沒有打印出“子進程結(jié)束”的信息?
2)作為守護進程的子進程中不能再次啟用運行其他的子進程,否則會報錯
?
4.練習題
import time from multiprocessing import Processdef task1(name):print('%s is running'%name)time.sleep(2)print('%s is done'%name)def task2(name):print('%s is running'%name)time.sleep(2)print('%s is done'%name)if __name__ == '__main__':p1 = Process(target = task1,args = ('守護子進程task1',))p2 = Process(target=task2,args = ('子進程task2',))p1.daemon = Truep1.start()p2.start()print('主進程結(jié)束運行')'''E:\python3\venv2\venv\Scripts\python.exe C:/Users/jinlin/Desktop/python_further_study/并發(fā)編程/守護進程.py 主進程結(jié)束運行 子進程task2 is running 子進程task2 is doneProcess finished with exit code 0'''?????? 總結(jié):由上述的結(jié)果可以看出,兩個子進程,子進程task1是作為主進程的守護進程,當代碼執(zhí)行完畢即主進程執(zhí)行完成后子進程守護進程task1還沒有來得及運行就隨著主進程的結(jié)束而結(jié)束了,注意,上面的Process是大寫
總結(jié)
以上是生活随笔為你收集整理的学习笔记(18):Python网络编程并发编程-守护进程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cadence如何画PCB封装库
- 下一篇: 学习笔记(19):Python网络编程并