守护进程(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:守护进程可以守护其他子进程么?
答:不可以,守护进程只能守护主进程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~