立即學習:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu
守護進程(了解)
?
1.概念:守護進程是主進程在創建子進程的時候,將子進程設置成守護自己的進程,等主進程結束后,不管子進程的狀態是怎樣的,都會立馬在主進程結束后結束
?
2.應用(個人理解):假設主進程是打開了一個瀏覽器,子進程是所有的瀏覽器上打開的標簽頁,只要瀏覽器關閉了,標簽頁也會跟著全部關閉!這理解是否正確?在標簽頁中似乎還可以運行子進程,這與下面3(1)不符
?
3.強調:
1)守護進程必須在子進程開啟前設置,否則會報錯
p.daemon()
......def task(name):print('子進程結束')......if __name__ == '__main__':p = process(target = task , args = ('子進程1',))p.daemon = Truep.start()print("主進程結束")#運行結果:主進程結束#運行完主進程后,即運行完代碼后,子進程來不及運行就已經隨著主進程的結束而結束了,因此沒有打印出“子進程結束”的信息
?
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('主進程結束運行')'''E:\python3\venv2\venv\Scripts\python.exe C:/Users/jinlin/Desktop/python_further_study/并發編程/守護進程.py
主進程結束運行
子進程task2 is running
子進程task2 is doneProcess finished with exit code 0'''
?????? 總結:由上述的結果可以看出,兩個子進程,子進程task1是作為主進程的守護進程,當代碼執行完畢即主進程執行完成后子進程守護進程task1還沒有來得及運行就隨著主進程的結束而結束了,注意,上面的Process是大寫