python-- 进程的 join 方法和 is_alive 方法(python怎么读)

网友投稿 507 2022-08-25


python-- 进程的 join 方法和 is_alive 方法(python怎么读)

join 方法

开启一个正常的子进程,父进程会等待子进程结束后,父进程(程序)才结束。join()是让主进程等待子进程执行完。 现象:主进程执行到这句话,主进程阻塞住,等待子进程执行

如何把父进程和子进程之间的关系变为同步或者异步?父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系

join必须放在start()后边

没有join

from multiprocessing import Processfrom time import sleepdef func(): sleep(6) print('这是儿子。。。')if __name__ == '__main__': p = Process(target=func) p.start() sleep(5) print('这是老子。。。')

结果:

这是老子。。。这是儿子。。。

等5s执行这是老子。。。,在等1s执行这是儿子。。。

有join

from multiprocessing import Processfrom time import sleepdef 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 Processimport timedef 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 Processimport timedef 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主进程结束了


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python-- 启动进程的两种方式(python编译器)
下一篇:java开源区块链jdchain入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~