中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python守護線程的作用是什么

發布時間:2020-09-24 09:46:48 來源:億速云 閱讀:282 作者:Leah 欄目:編程語言

本篇文章為大家展示了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守護線程的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南涧| 宁国市| 罗山县| 若尔盖县| 永兴县| 天长市| 静宁县| 邵阳县| 阿拉善盟| 什邡市| 广平县| 英山县| 蒲城县| 朝阳县| 南康市| 三门峡市| 张家口市| 南京市| 东台市| 临海市| 岳西县| 宿州市| 山西省| 正镶白旗| 临猗县| 梨树县| 景东| 江川县| 巴中市| 临沂市| 通州市| 罗甸县| 鄱阳县| 岢岚县| 会同县| 宁武县| 甘洛县| 涿州市| 揭阳市| 行唐县| 瑞昌市|