在指令碼執行過程中有乙個主線程,若在主線程中建立了子執行緒,當主線程結束時根據子執行緒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...