[Python] 子線程退出孫線程不退出


遇到了一個大坑!

如圖,在子線程ThreadFunc退出之后,ThreadFunc2依舊在運行。。。 根本不會結束

但是官方文檔中說明了,只要設置了daemon不為None 就能設置子線程是守護線程,這樣線程退出的時候,子線程也會退出

如果不是 None,daemon 參數將顯式地設置該線程是否為守護模式。 如果是 None (默認值),線程將繼承當前線程的守護模式屬性。

但是子線程的子線程似乎不會退出!
只能使用這種方式 ⬇

import threading
import time

def ThreadFunc2(s,flag):
    while True:
        if flag['exit'] == 1:
            print("啊! 我死了")
            return
        print("ThreadFunc2")
        time.sleep(1)

def ThreadFunc(s):
    flag = {'exit':0}
    threading.Thread(target=ThreadFunc2,args=(s,flag),daemon=True).start()
    time.sleep(2)
    flag['exit'] = 1
    print("ThreadFunc 退出")
    return 

s = [1]
threading.Thread(target=ThreadFunc,args=(s,),daemon=True).start() 
    
for i in range(0,500):
    print(s)
    time.sleep(1)

好吧 更新一下,原因是 他的意思不是父線程,而是主線程,也即是設置成為守護線程之后,主線程退出子線程就退出。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM