您好,登錄后才能下訂單哦!
本篇文章為大家展示了Python守護線程的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
有一種線程,它是在后臺運行的,它的任務是為其他線程提供服務,這種線程被稱為“后臺線程(Daemon Thread)”,又稱為“守護線程”或“精靈線程”。Python 解釋器的垃圾回收線程就是典型的后臺線程。
后臺線程有一個特征,如果所有的前臺線程都死亡了,那么后臺線程會自動死亡。
調用 Thread 對象的 daemon 屬性可以將指定線程設置成后臺線程。下面程序將指定線程設置成后臺線程,可以看到當所有的前臺線程都死亡后,后臺線程隨之死亡。當在整個虛擬機中只剩下后臺線程時,程序就沒有繼續運行的必要了,所以程序也就退出了。
import threading # 定義后臺線程的線程執行體與普通線程沒有任何區別 def action(max): for i in range(max): print(threading.current_thread().name + " " + str(i)) t = threading.Thread(target=action, args=(100,), name='后臺線程') # 將此線程設置成后臺線程 # 也可在創建Thread對象時通過daemon參數將其設為后臺線程 t.daemon = True # 啟動后臺線程 t.start() for i in range(10): print(threading.current_thread().name + " " + str(i)) # -----程序執行到此處,前臺線程(主線程)結束------ # 后臺線程也應該隨之結束
上面程序中先將 t 線程設置成后臺線程(第 10 行代碼),然后啟動該線程。本來該線程應該執行到 i 等于 99 時才會結束,但在運行程序時不難發現,該后臺線程無法運行到 99,因為當主線程也就是程序中唯一的前臺線程運行結束后,程序會主動退出,所以后臺線程也就被結束了。
從上面的程序可以看出,主線程默認是前臺線程,t線程默認也是前臺線程。但并不是所有的線程默認都是前臺線程,有些線程默認就是后臺線程。前臺線程創建的子線程默認是前臺線程,后臺線程創建的子線程默認是后臺線程。
可見,創建后臺線程有兩種方式:
主動將線程的 daemon 屬性設置為 True。
后臺線程啟動的線程默認是后臺線程。
注意,當前臺線程死亡后,Python 解釋器會通知后臺線程死亡,但是從它接收指令到做出響應需要一定的時間。如果要將某個線程設置為后臺線程,則必須在該線程啟動之前進行設置。也就是說,將 daemon 屬性設為 True,必須在 start() 方法調用之前進行,否則會引發 RuntimeError 異常。
上述內容就是Python守護線程的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。