python-- 进程的常用属性、守护进程
常用属性
- p.name = 给p进程一个名字
- p.pid 返回p进程的pid
- p.daemon = True 将p进程设置为守护进程。(True为守护进程,False为普通进程)
from multiprocessing import Process import os import time def func(): print('这里是儿子,儿子的pid是%s' % (os.getpid())) if __name__ == '__main__': p = Process(target=func) p.start() p.name = 'zou' print('儿子的名字是%s' % (p.name)) print('儿子的pid是%s' % (p.pid)) print('儿子是不是守护进程?', p.daemon)
结果:
儿子的名字是zou
儿子的pid是3706
儿子是不是守护进程? False
这里是儿子,儿子的pid是3706
守护进程
- 守护进程,必须要在start之前设置,之后设置会报错
- 守护进程:跟随着父进程的代码执行结束,守护进程就结束(不严谨,看下面的例子)
- 守护进程:不允许开启子进程
没有守护进程
from multiprocessing import Process import os import time def func(): print('子进程结束了') if __name__ == '__main__': p = Process(target=func) p.start() p.name = 'zou' print('主进程结束了')
结果:
主进程结束了
子进程结束了
没有守护进程时,主进程结束了,子进程还在执行
有守护进程
from multiprocessing import Process import os import time def func(): print('子进程结束了') if __name__ == '__main__': p = Process(target=func) p.daemon = True # 将p进程设置为守护进程,必须要在start之前设置 p.start() p.name = 'zou' print('主进程结束了')
结果:
主进程结束了
将p进程设置为守护进程后,主进程结束后,不管子进程执行到哪,子进程都会结束
from multiprocessing import Process import os import time def func(): time.sleep(1) print('子进程结束了') if __name__ == '__main__': p = Process(target=func) p.daemon = True # 将p进程设置为守护进程,必须要在start之前设置 p.start() p.name = 'zou' print('主进程结束了') p.join()
结果:
主进程结束了
子进程结束了
如果有join()则会等待子进程结束完
守护进程:不允许开启子进程
没有设置守护进程时
from multiprocessing import Process import time def demo(): print('demo....') def func(): p1 = Process(target=demo) p1.start() print('子进程结束了') if __name__ == '__main__': p = Process(target=func) # p.daemon=True# 将p进程设置为守护进程,必须要在start之前设置 p.start() p.name = 'zou' print('主进程结束了') time.sleep(2)
结果:
可以启动子进程
主进程结束了
子进程结束了
demo....
设置了守护进程
from multiprocessing import Process import os import time def demo(): print('demo....') def func(): p1 = Process(target=demo) p1.start() print('子进程结束了') if __name__ == '__main__': p = Process(target=func) p.daemon = True # 将p进程设置为守护进程 p.start() p.name = 'zou' print('主进程结束了') time.sleep(2)
运行会报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)