zoukankan      html  css  js  c++  java
  • 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
    主进程结束了
  • 相关阅读:
    51nod1363-最小公倍数之和
    [模板] 数论题的一些经验
    WC2019游记 && 课件
    (伪)WC2019题解
    [模板] 后缀自动机&&后缀树
    [模板] 二分图博弈 && BZOJ2463:[中山市选2009]谁能赢呢?
    界面修改日志
    [模板] dp套dp && bzoj5336: [TJOI2018]party
    BZOJ1025:[SCOI2009]游戏
    [模板] BSGS/扩展BSGS
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13774332.html
Copyright © 2011-2022 走看看