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)

    运行会报错

  • 相关阅读:
    二维数组 A[m][n] 按行优先和按列优先的 下标地址转换公式
    服务器的公网ip 和内网ip
    剑指offer 23.二叉搜索树的后序遍历序列
    剑指offer 22. 从上往下打印二叉树 & 102. 二叉树的层序遍历
    剑指offer 21.栈的压入、弹出序列 & leetcode 剑指 Offer 31. 栈的压入、弹出序列
    剑指offer 4. 重建二叉树 & leetcode 剑指 Offer 07. 重建二叉树 & leetcode hot 100 105. 从前序与中序遍历序列构造二叉树
    Linux配置Nginx+Tomcat负载均衡
    yum安装apache及问题解决
    Linux高级文本处理命令
    JMeter:生成漂亮的多维度的HTML报告
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13775220.html
Copyright © 2011-2022 走看看