当主进程结束时,子进程应该随着主进程的结束而结束,能做到这件事的,就叫做守护进程。
下面的代码,当主进程结束之后,子进程还会继续执行
from multiprocessing import Process
import time
def func():
while True:
time.sleep(0.5)
print('123456')
if __name__ == '__main__':
p = Process(target = func)
p.start()
i = 0
while i<20:
print('我是谁?')
time.sleep(1)
i += 1
在进程p.start()
之前,设置属性daemon
为True
,就可以将进程变为一个守护进程,即当主进程结束的时候,子进程也会随着主进程代码执行完毕而结束,此时其他不是守护进程的子进程不会结束。
from multiprocessing import Process
import time
def func():
while True:
time.sleep(0.5)
print('123456')
if __name__ == '__main__':
p = Process(target = func)
p.daemon = True
p.start()
i = 0
while i<10:
print('我是谁?')
time.sleep(1)
i += 1