zoukankan      html  css  js  c++  java
  • 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)

    运行会报错

  • 相关阅读:
    西瓜书的读书笔记
    Tensorflow-gpu在windows10上的安装(anaconda)
    php 设置报错等级
    PHP 类型比较表
    PHP中的定界符格式
    php进制转换函数
    php魔法常量
    php中双$$与多$$
    php引用传值
    CSS3过渡效果实现菜单划出效果
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13775220.html
Copyright © 2011-2022 走看看