python-- 进程的 join 方法和 is_alive 方法
join 方法
开启一个正常的子进程,父进程会等待子进程结束后,父进程(程序)才结束。join()是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行
如何把父进程和子进程之间的关系变为同步或者异步?父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系
join必须放在start()后边
没有join
from multiprocessing import Process from time import sleep def func(): sleep(6) print('这是儿子。。。') if __name__ == '__main__': p = Process(target=func) p.start() sleep(5) print('这是老子。。。')
结果:
这是老子。。。
这是儿子。。。
等5s执行这是老子。。。,在等1s执行这是儿子。。。
有join
from multiprocessing import Process from time import sleep def func(): sleep(6) print('这是儿子。。。') if __name__ == '__main__': p = Process(target=func) p.start() p.join() # 等待子进程执行完在往下执行 sleep(5) print('这是老子。。。')
结果:
这是儿子。。。
这是老子。。。
等6s执行这是儿子。。。,在等5s执行这是老子。。。
is_alive 方法
返回一个bool值,如果返回True,代表进程还活着,如果返回False,代表子进程死了
p.is_alive() 判断p进程是否还活着
p.terminate() 杀死p进程
from multiprocessing import Process import time def func(): time.sleep(1) print(123) if __name__ == '__main__': p = Process(target=func, ) p.start() p.terminate() # 杀死p进程,让解释器告诉操作系统,请杀掉p进程。 print('子进程是否还活着?', p.is_alive()) time.sleep(0.002) print('子进程是否还活着?', p.is_alive())
结果:
子进程是否还活着? True
子进程是否还活着? False
from multiprocessing import Process import time def func(): time.sleep(1) print('子进程') if __name__ == '__main__': p = Process(target=func, ) p.start() # p.is_alive()放在start前面都是false,因为还没启动 print(p.is_alive()) p.join() print(p.is_alive()) # 子进程已经运行结束了 print('主进程结束了')
结果:
True
子进程
False
主进程结束了
【推荐】国内首个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)
2019-06-23 JavaScript -- DOM事件
2019-06-23 JavaScript -- DOM