守护进程(Python)

复制代码
#__author__:Kelvin
#date:2020/5/10 11:37
import time
from multiprocessing import Process

def son1():
    while True:
        print('--> in son1')
        time.sleep(1)

def son2():   # 执行10s
    for i in range(10):
        print('in son2')
        time.sleep(1)

if __name__ == '__main__':    # 3s
    p1 = Process(target=son1)
    p1.daemon = True    # 表示设置p1是一个守护进程
    p1.start()
    p2 = Process(target=son2,)
    p2.start()
    time.sleep(3)
    print('in main')


# 主进程会等待所有的子进程结束,是为了回收子进程的资源
# 守护进程会等待主进程的代码执行结束之后再结束,而不是等待整个主进程结束.
# 主进程的代码什么时候结束,守护进程就什么时候结束,和其他子进程的执行进度无关

# 要求守护进程p1必须在p2进程执行结束之后才结束
# import time
# from multiprocessing import Process
#
# def son1():
#     while True:
#         print('--> in son1')
#         time.sleep(1)
#
# def son2():   # 执行10s
#     for i in range(10):
#         print('in son2')
#         time.sleep(1)
#
# if __name__ == '__main__':    # 3s
#     p1 = Process(target=son1)
#     p1.daemon = True    # 表示设置p1是一个守护进程
#     p1.start()
#     p2 = Process(target=son2,)
#     p2.start()
#     time.sleep(3)
#     print('in main')
#     p2.join()    # 等待p2结束之后才结束

# 等待p2结束 --> 主进程的代码才结束 --> 守护进程结束
复制代码

要知道的两个问题:

1:为什么守护线程不能在主进程结束后再结束?

答:因为主进程要对守护进程结束后的资源进行回收,所有守护进程必须在主进程结束之前就结束。因此守护进程选择在主进程的代码执行结束这个节点结束自己。

2:守护进程可以守护其他子进程么?

答:不可以,守护进程只能守护主进程。

posted @   佛祖让我来巡山  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网

点击右上角即可分享
微信分享提示