溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python并發編程多進程之守護進程原理解析

發布時間:2020-09-25 20:03:39 來源:腳本之家 閱讀:185 作者:minger_lcm 欄目:開發技術

守護進程

主進程創建子進程目的是:主進程有一個任務需要并發執行,那開啟子進程幫我并發執行任務

主進程創建子進程,然后將該進程設置成守護自己的進程

關于守護進程需要強調兩點:

其一:守護進程會在主進程代碼執行結束后就終止

其二:守護進程內無法再開啟子進程,否則拋出異常:AssertionError: daemonic processes are not allowed to have children

如果我們有兩個任務需要并發執行,那么開一個主進程和一個子進程分別去執行就ok了,如果子進程的任務在主進程任務結束后,就沒有存在的必要了,那么該子進程應該在開啟前就被設置成守護進程。主進程代碼運行結束,守護進程隨即終止

子進程還沒來得及開始就掛了

設置了守護進程 就是不給子進程運行

守護進程必須在開啟子進程前開啟

from multiprocessing import Process
import time
def task(name):
  print("%s is running" % name)
  time.sleep(3)
  print("%s is done" % name)
if __name__ == "__main__":
  t = Process(target=task, args=('子進程1',))
  # 守護進程必須在開啟子進程前開啟
  t.daemon = True
  t.start()
  print("主")
'''
主
'''

開一個子進程是為了并發任務, 這個子進程的任務,在主進程死了,這個任務就沒有意義存在,這個子進程就應該設置守護進程

守護進程練習題

在主進程代碼執行完畢,只要出現打印主進程信息,p1就不會執行或者死掉

from multiprocessing import Process
import time
def foo():
  print(123)
  time.sleep(1)
  print("end123")
def bar():
  print(456)
  time.sleep(3)
  print("end456")
if __name__ == '__main__':
  p1=Process(target=foo)
  p2=Process(target=bar)
  p1.daemon=True
  p1.start()
  p2.start()
  print("main-------")  
'''
main-------
end456
'''

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女