【一】什么是守护进程
- 守护进程是在计算机系统启动时就已经运行,并且一直在后台运行的一类特殊进程。
- 特殊在只要系统不关机,就会一直存在
- 守护进程往往是由系统管理员手动启动的,它们可以在系统启动时自动启动,一直运行在后台,直到系统关闭或被停止
- 常见的守护进程包括网络服务 (如 web 服务器、邮件服务器、 ftp 服务器等)
- 守护进程通常在后台运行,不需要用户交互,并且有较高的权限,因此编写守护进程需要特别注意安全性和稳定性
【二】主进程死亡,子进程未死亡
from multiprocessing import Process
import time
def task(name):
print(f'总管:{name} 正常存活')
time.sleep(2)
print(f'总管:{name} 正常死亡')
if __name__ == '__main__':
print('皇帝:ligo 执掌江山')
p = Process(target=task, args=('drake',))
p.start()
print('皇帝:ligo 寿终正寝')
# 皇帝:ligo 执掌江山
# 皇帝:ligo 寿终正寝
# 总管:drake 正常存活
# 总管:drake 正常死亡
【三】主进程死亡,子进程必死亡
- 将设置主进程的方法在调用主进程的前面声明
from multiprocessing import Process
import time
def task(name):
print(f'总管:{name} 正常存活')
time.sleep(2)
print(f'总管:{name} 正常死亡')
if __name__ == '__main__':
print('皇帝:ligo 执掌江山')
p = Process(target=task, args=('drake',))
# 将进程 p 设置成守护进程
p.daemon = True
p.start()
print('皇帝:ligo 寿终正寝')
# 皇帝:ligo 执掌江山
# 皇帝:ligo 寿终正寝
- 错误用法:在开始后给进程加锁
from multiprocessing import Process
import time
def task(name):
print(f'总管:{name} 正常存活')
time.sleep(2)
print(f'总管:{name} 正常死亡')
if __name__ == '__main__':
print('皇帝:ligo 执掌江山')
p = Process(target=task, args=('drake',))
p.start()
# 将进程 p 设置成守护进程
p.daemon = True
print('皇帝:ligo 寿终正寝')
# assert self._popen is None, 'process has already started'
# AssertionError: process has already started
# 报错原因:进程已经开始了无法再次重置进程状态
# 总管:drake 正常存活
# 总管:drake 正常死亡
标签:__,name,ligo,print,进程,守护
From: https://www.cnblogs.com/ligo6/p/18218359