Python多執行緒程式設計中daemon屬性的作用

2021-07-25 16:00:14 字數 936 閱讀 6764

在指令碼執行過程中有乙個主線程,若在主線程中建立了子執行緒,當主線程結束時根據子執行緒daemon屬性值的不同可能會發生下面的兩種情況之一:

屬性daemon的值預設為false,如果需要修改,必須在呼叫start()方法啟動執行緒之前進行設定。另外要注意的是,上面的描述並不適用於idle環境中的互動模式或指令碼執行模式,因為在該環境中的主線程只有在退出python idle時才終止。

import threading

import time

#繼承thread類,建立自定義執行緒類

class

mythread(threading.thread):

def__init__(self, num, threadname):

threading.thread.__init__(self, name=threadname)

self.num = num

#重寫run()方法

defrun(self):

time.sleep(self.num)

print(self.num)

#建立自定義執行緒類物件,daemon預設為false

t1 = mythread(1, 't1')

t2 = mythread(5, 't2')

#設定執行緒物件t2的daemon屬性為true

t2.daemon = true

print(t1.daemon)

print(t2.daemon)

#啟動執行緒

t1.start()

t2.start()

把上面的**儲存為threaddaemon.py檔案,在idle環境中執行結果如下圖所示

在命令提示符環境中執行結果如下圖所示。

可以看到,在命令提示符環境中執行該程式時,執行緒t2沒有執行結束就跟隨主線程一同結束了,因此並沒有輸出數字5。

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還可以對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義如下 args 元組形式的引...

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還能夠對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義例如以下 args 元組形式...

Python多執行緒程式設計

import threading import time deffunc name time.sleep 3 print 子執行緒 s 啟動 threading.current thread name print hello name print 子執行緒 s 結束 threading.curren...