守护进程
(1)简介
- 守护进程(Daemon Process)是在后台运行的一种特殊类型的进程。守护进程通常在系统启动时启动,并在系统关闭时关闭。它们在后台默默地执行任务,不与终端或用户交互,通常用于执行系统级别的任务、服务或守护任务。
(2)主进程死亡,子进程未死亡
from multiprocessing import Process
import time
def task(name):
print(f'熊猫:>>{name}>>吃饭')
time.sleep(2)
print(f'熊猫:>>{name}>>睡觉')
if __name__ == '__main__':
print(f'动物园 :>>> 开园')
p = Process(target=task, args=('heart',))
# p = Process(target=task, kwargs={"name":"dream"})
p.start()
print(f'动物园 :>>> 闭园')
# 动物园 :>>> 开园
# 动物园 :>>> 闭园
# 熊猫:>>heart>>吃饭
# 熊猫:>>heart>>睡觉
(3)主进程死亡,子进程必死亡
- 在代码中,主程序启动了一个子进程
p
来执行 task
函数。然而,当主程序执行完毕后,如果子进程 p
还没有完成,主程序会立即结束,这可能导致子进程未能执行完毕。
- 在这个情况下,将子进程
p
设置为守护进程 (p.daemon = True
),这意味着当主程序结束时,守护进程 p
会随之终止,而不管它是否已经执行完毕。
from multiprocessing import Process
import time
def task(name):
print(f'熊猫:>>{name}>>吃饭')
time.sleep(2)
print(f'熊猫:>>{name}>>睡觉')
if __name__ == '__main__':
print(f'动物园 :>>> 开园')
p = Process(target=task, args=('heart',))
# p = Process(target=task, kwargs={"name":"dream"})
# 将进程 p 设置成守护进程
p.daemon = True
p.start()
print(f'动物园 :>>> 闭园')
# 动物园 :>>> 开园
# 动物园 :>>> 闭园