问: 我主进程造子进程的目的是什么 ? 答: 是执行一个并发的任务
主进程进行完了,子进程就没有存在的意义了,都跟主进程一块死 ,那么这个子进程就应该被设置为守护进程
- 其一:守护进程会在主进程代码执行结束后就终止
- 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children
#其二
from multiprocessing import Process
import time
def task(name):
print("%s is running" %name)
time.sleep(2)
#子进程
p=Process(target=time.sleep,args=(3,))
p.start()
if __name__ == '__main__':
p=Process(target=task,args=('子进程1',))
#守护进程
p.daemon = True
#开启
p.start()
p.join()
print('主进程结束')
守护进程就是执行完最后一行代码 ,守护进程实际是在主进程代码执行完毕
性能高的时候,在打印print(“main-----------------”) 过程当中还没有打印完呢 ,p1起来了,就是下图
只要print(“main-----------------”) 主进程已经运行完了,所有 print(“end123”)就不会出来 ,
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-----------------")