守护进程

【一】什么是守护进程

  • 守护进程是在计算机系统启动时就已经运行,并且一直在后台运行的一类特殊进程。
  • 特殊在只要系统不关机,就会一直存在
  • 守护进程往往是由系统管理员手动启动的,它们可以在系统启动时自动启动,一直运行在后台,直到系统关闭或被停止
  • 常见的守护进程包括网络服务 (如 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 正常死亡
posted @   Ligo6  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示