python並發編程之多線程守護系列、互斥鎖、生產者消費者模型

來源:互聯網
上載者:User

標籤:threading   功能   殭屍   thread   int   開始   互斥鎖   區別   之間   

無論是進程還是線程,都遵循:守護xxx會等待主xxx運行完畢後被銷毀

需要強調的是:運行完畢並非終止運行

#1.對主進程來說,運行完畢指的是主進程代碼運行完畢#2.對主線程來說,運行完畢指的是主線程所在的進程內所有非守護線程統統運行完畢,主線程才算運行完畢

詳細解釋:
#1 主進程在其代碼結束後就已經算運行完畢了(守護進程在此時就被回收),然後主進程會一直等非守護的子進程都運行完畢後回收子進程的資源(否則會產生殭屍進程),才會結束,#2 主線程在其他非守護線程運行完畢後才算運行完畢(守護線程在此時就被回收)。因為主線程的結束意味著進程的結束,進程整體的資源都將被回收,而進程必須保證非守護線程都運行完畢後才能結束。
from threading import Threadimport timedef sayhi(name):    time.sleep(2)    print(‘%s say hello‘ %name)if __name__ == ‘__main__‘:    t=Thread(target=sayhi,args=(‘egon‘,))    t.setDaemon(True) #必須在t.start()之前設定    t.start()    print(‘主線程‘)    print(t.is_alive())    ‘‘‘    主線程    True    ‘‘‘
自我總結認知:守護進程可以認為是一個特殊的子進程,某些時候有的需求要求主進程一結束,某個具有特殊功能的進程也結束,這就是守護進程了,守護進程的功能從一開始設計就跟隨主進程而動。
守護線程基本上可以認為和守護進程一樣,但是他們之間存在一些區別。守護線程無論守護的是主線程還是子線程,仍然會隨著主進程結束而結束。也就是守護線程結束與否看的不是主線程, 而是主進程。

python並發編程之多線程守護系列、互斥鎖、生產者消費者模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.