無論是程序還是執行緒,都遵循:守護xx會等待主xx執行完畢後銷毀。
需要強調的是:執行完畢並非終止執行。
對主程序來說,執行完畢指的是主程序**執行完畢
對主線程來說,執行完畢指的是主線程所在的程序內所有非守護執行緒統統執行完畢,主線程才算執行完畢。
1.1詳細解釋
主程序在其**結束後就已經算執行完畢了(守護程序在此就被**),然後主程序會一直等非守護的子程序都執行完畢後**子程序的資源(否則會產生殭屍程序),才會結束。
主線程在其他非守護執行緒執行完畢後才算執行完畢(守護執行緒在此時就被**)。因為主線程的結束意味著程序的結束,程序整體的資源都將被**,而程序必須保證非守護執行緒都執行完畢後才能結束。
1.2守護執行緒例1
fromthreading import thread
import time
def sayhi(name):
time.sleep(2)
print(
'%s say hello
' %name)
if __name__ == '
__main__':
t=thread(target=sayhi,args=('
nick
',))
t.setdaemon(true) #必須在t.start()之前設定
t.start()
print(
'主線程')
print(t.is_alive())
outputs
macname@macdemacbook-pro py %python3 cccccc.py主線程true
macname@macdemacbook-pro py %
等待所有子執行緒結束
fromthreading import thread
import time
def foo():
print(
123)
time.sleep(1)
print(
"end123")
def bar():
print(
456)
time.sleep(3)
print(
"end456")
t1 = thread(target=foo)
t2 = thread(target=bar)
t1.daemon =true
t1.start()
t2.start()
print(
"main-------")
outputs
macname@macdemacbook-pro py %python3 cccccc.py123456
main-------end123
end456
macname@macdemacbook-pro py %
Python程式中的執行緒操作 建立多執行緒
python提供了幾個用於多執行緒程式設計的模組,包括thread threading和queue等。thread和threading模組允許程式設計師建立和管理執行緒。thread模組提供了基本的執行緒和鎖的支援,threading提供了更高階別 功能更強的執行緒管理的功能。queue模組允許使用...
python執行緒喚醒 Python中的執行緒
執行緒同步 概念執行緒同步,執行緒間協同,通過某種技術,讓乙個執行緒訪問某些資料時,其他執行緒不能訪問這些資料,直到該執行緒完成對資料的操作.臨界區 critical section 互斥量 mutex 訊號量 semaphore 時間 event event事件 event事件,是執行緒間通訊機制...
python程式多執行緒 PYTHON多執行緒
在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...