1. 程式人生 > 程式設計 >python 如何設定守護程序

python 如何設定守護程序

上一篇文章 介紹 join 在多程序中的作用,本文繼續學習設定守護程序的對程式的影響。(Python大牛可以繞行)

我們通過兩個例子說明

# encoding: utf-8
"""
author: [email protected]
time: 2019/7/30 11:20 AM
func:
"""
from multiprocessing import Process
import os
import time

def now():
  return str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))

def func_1(name):
  print(now() + ' Run child process %s,pid is %s...' % (name,os.getpid()))
  time.sleep(2)
  print(now() + ' Stop child process %s,os.getpid()))


def func_2(name):
  print(now() + ' Run child process %s,os.getpid()))
  time.sleep(4)
  print(now() + ' hello world!')
  print(now() + ' Stop child process %s,os.getpid()))


if __name__ == '__main__':
  print ('Parent process %s.' % os.getpid())
  p1 = Process(target=func_1,args=('func_1',))
  p2 = Process(target=func_2,args=('func_2',))
  print now() + ' Process start.'
  p1.daemon = True #設定子程序p1為守護執行緒
  p1.start()
  p2.start()
  print now() + ' Process end .'

結果顯示

python 如何設定守護程序

啟動了子程序 Run child process func_1 但是沒有 func_1 的結束提示。隨著主程序的結束而結束。

if __name__ == '__main__':
  print ('Parent process %s.' % os.getpid())
  p1 = Process(target=func_1,))
  print now() + ' Process start.'
  p2.daemon = True #設定子程序p2為守護執行緒
  p1.start()
  p2.start()
  print now() + ' Process end .'

結果顯示

python 如何設定守護程序

啟動了子程序func_1,而func_2 沒有啟動便隨著主程序的結束而結束。

總結

對於程序或者子執行緒設定join() 意味著在子程序或者子執行緒結束執行之前,當前程式必須等待。當我們在程式中執行一個主程序(主執行緒),然後有建立多個子執行緒。主執行緒和子執行緒各自執行。當主執行緒想要退出程式時會檢查子執行緒是否結束。如果我們設定deamon屬性為True ,不管子執行緒是否結束,都會和主執行緒一起結束。

-The End-

以上就是python 如何設定守護程序的詳細內容,更多關於python 守護程序的資料請關注我們其它相關文章!