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