zoukankan      html  css  js  c++  java
  • (4)进程---daemon守护进程和join阻塞

     

    join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法

    join 等待所有子进程执行完毕之后,主进程在向下执行

    (1) 1个子进程通过join加阻塞,进行同步控制,放在主程序之前

    (2)多个子进程通过join加阻塞,把进程加入列表,进行同步控制

     

    #守护,无join

    #------------------主线程运行正常结束,子线程强制结束--------------------------------#

    #非守护,无join

    #------------------主线程正常结束-----------子线程运行正常结束(结束顺序不一定)--------------------

    #守护,join(阻塞)

    #------------------子线程运行正常结束-----------主线程正常结束--------------------------------#

    #非守护,join(阻塞)

    #------------------子线程运行正常结束-----------主线程正常结束--------------------------------#

    p.daemon = True#注意一个线程默认不是守护线程,也就是说默认值是False

    #结论:

    #☆☆☆对于含有join的代码而言,一定有主线程在子线程之后才执行完。

    #☆☆☆对于没有join的代码而言:如果守护,只要主线程关闭,子线程及时没执行完也必须关闭,;

    # 如果非守护,主线程与子线程结束顺序不一定

     

    p.start()

    # p.join()#(挡住,无法执行join以后的语句)

     

    守护进程(daemon)

    可以给子进程贴上守护进程的名字,该进程会随着主进程代码执行完毕而结束

    (实际为主进程守护)

    (1)守护进程会在主进程代码执行结束后就终止

    (2)守护进程内无法再开启子进程,否则抛出异常(了解)

    (3)正常情况下,主进程默认等待子进程全部结束而结束

    (4)守护进程必须写在start之前进行设置

    语法:

    p.daemon = True

    p.start()

    (5) 当多个子进程并发执行时,默认主进程等待子进程

    守护进程 守护的是 主进程 , 主要主进程里面的代码执行完毕

    对应是守护进程的那个子进程立即终止,其他非守护进程继续

    守护进程是主进程的代码执行到最后一行了,即为结束。

    (6) 守护进程的实际用途:报活

    如果最大的监控系统挂掉,就让其他服务器停掉

    就好比厂子倒闭了,员工回家放假

    import time
    from multiprocessing import Process
    
    def alive():
        while True:
            print('1号主机发送日志消息,iam ok!')
            time.sleep(5)
    def func():
        while True:
            print('统计各个主机的系统日志,维护数据库管理')
            time.sleep(5)
    if __name__ == '__main__':
        p = Process(target=alive)
        p.daemon = True
        p.start()
        p = Process(target=func)
        p.start()
        p.join() # 加上join之后,等待所有子进程执行完毕后,在运行主进程后面的代码
        print('............')
    View Code
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    1号主机发送日志消息,iam ok!
    统计各个主机的系统日志,维护数据库管理
    View Code

     

     

  • 相关阅读:
    cuda9.0 中不存在libnppi.so
    深度学习训练踩坑记
    采用代理之后,pip 运行报错socks
    摄像机模型
    段错误:使用opencv打开视频流
    ffmpeg+cuda+opencv
    pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
    【TCP/IP详解】BOOTP:引导程序协议
    【TCP/IP详解】TFTP:简单文件传送协议
    【TCP/IP详解】IGMP Internet组管理协议
  • 原文地址:https://www.cnblogs.com/lyj910313/p/10787194.html
Copyright © 2011-2022 走看看