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)

    运行会报错

  • 相关阅读:
    nodejs修改jade为html的方法(ejs is not defined解决)
    http协议简单解析
    有序序列ol li 详解(ol li 标号未显示?)
    html5新标签及废弃元素
    HTML <!DOCTYPE> 声明详解
    ACM组队安排---递推
    使用CORDIC算法求解角度正余弦及Verilog实现
    Xilinx FPGA的专用时钟引脚及时钟资源相关
    【转】上拉下拉电阻、I/O输出(开漏、推挽等)
    Testbench文件编写纪要(Verilog)
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13775220.html
Copyright © 2011-2022 走看看