執行緒與程序3 守護執行緒

2022-02-20 17:42:21 字數 1139 閱讀 3288

join(),等待子執行緒執行完了,主線程才繼續往下執行,等所有執行緒執行完了,才退出程式。

當把子執行緒變成守護執行緒以後,只要主線程(非守護執行緒)執行完就退出程式,不管子執行緒完了沒完。

主線程沒法設定成守護執行緒。

#主線程啟動子執行緒之後,兩者是並行的,相互之間是獨立的。

import threading,time

def run(n):

print('task',n)

time.sleep(2)

print('task done',threading.current_thread()) #列印當前執行緒是主線程還是子執行緒

start_time=time.time()

t_objs=

for i in range(10):

t=threading.thread(target=run,args=("t-%s"%i,))

t.setdaemon(true) #把當前執行緒設定為守護執行緒,一定要在start之前設定。

t.start()

print('----all threads has finished',threading.current_thread(),threading.active_count())

print("cost time is:",time.time()-start_time)

執行結果,沒有等待子執行緒(守護執行緒)的sleep的2s,而是直接結束了程式了。

沒有看到print('task done',threading.current_thread()) 的輸出,證明守護執行緒被強制關閉了。

task t-0

task t-1

task t-2

task t-3

task t-4

task t-5

task t-6

task t-7

task t-8

task t-9

----all threads has finished <_mainthread(mainthread, started 11936)> 11

cost time is: 0.0010001659393310547

process finished with exit code 0

守護執行緒 與守護程序

守護執行緒 守護執行緒會等待所有非守護執行緒執行結束才結束 守護程序 無論子程序有沒有執行結束,當主程式的 執行完畢,都會結束 def f1 time.sleep 2 print 1號執行緒 def f2 time.sleep 3 print 2號執行緒 if name main t1 thread...

執行緒 守護執行緒與非守護執行緒

什麼是守護執行緒?非守護執行緒好理解,就是程式中前端執行的執行緒,我個人理解為常用於處理主動事務的執行緒。守護執行緒 顧名思義,用來守護處理事務的執行緒。它主要執行在程式後端,最有代表的例子gc執行緒,就是守護執行緒。守護執行緒的特點 實現守護執行緒,驗證非守護執行緒結束時,守護執行緒也中斷。cre...

python執行緒鎖 守護執行緒,程序鎖 守護程序

1 守護程序 1.1 什麼是守護程序?1 守護程序會在主程序 執行結束的情況下,立即結束。2 守護程序本身其實就是乙個子程序。3 主程序在其 結束後已經執行完畢 守護程序在此時就被 然後主程序會一直等非守護的子程序都執行完畢後 子程序的資源才會結束。1.2 為什麼要用守護程序?1 守護程序本身就是乙...