守護進程是可以一直運行而不阻塞主程序退出。要標志一個守護進程,可以將Process實例的daemon屬性設置為True。代碼如下:
import os
import time
import random
import sys
from multiprocessing import Process,current_process
def daemon():
p = current_process()
print "starting ID%d prccess%s\n" % (p.pid,p.name)
sys.stdout.flush()
time.sleep(3)
print "Exiting:%s\n" % p.name
sys.stdout.flush()
def main():
p = Process(name="Daemon",target=daemon)
p.daemon=True
p.start()
if __name__=="__main__":
main()
time.sleep(1)
由於主進程會在1秒後退出,守護進程的 print "Exiting:%s\n" % p.name這句是看不到的。
若想看到守護進程的 print "Exiting:%s\n" % p.name語句輸出,可以利用join,主進程等待守護進程的退出後再退出,即在,p.start()後添加p.join()然後把time。sleep(1)刪除