zoukankan      html  css  js  c++  java
  • 守护线程

    1、主线程结束代表进程结束,即代表进程生命周期,那么主线程该什么时候结束?守护线程随主线程,主线程随非守护线程

    主线程结束,守护线程结束。

    from threading import Thread
    import time
    def sayhi(name):
        time.sleep(2)
        print("%s sat hello" % name)
    if __name__=="__main__":
        t=Thread(target=sayhi,args=('Ya',))
        t.setDaemon(True)
        # t.daemon=True
        t.start()
        print("'主'线程")
        print(t.isAlive())

    其他非守护线程结束,主线程才结束。

    from threading import Thread
    import time
    def foo():
        print(123)
        time.sleep(1)
        print("end123")
    def bar():
        print(456)
        time.sleep(3)
        print("end456")
    if __name__ == "__main__":
        t1=Thread(target=foo)
        t2=Thread(target=bar)
    
        t1.daemon=True
        t1.start()
        t2.start()
        print("---main---")

    2、互斥锁,将并行改为串行,牺牲效率,保证数据安全

    多线程公用一个进程数据,所以无需像多进程那样穿入mutex对象

    from threading import Thread,Lock
    n=100
    import time
    def task():
        global n
        mutex.acquire()
        temp=n
        time.sleep(0.1)
        n=temp-1
        mutex.release()
    if __name__=="__main__":
        t_l=[]
        mutex=Lock()
        for i in range(100):
            t=Thread(target=task)
            t_l.append(t)
            t.start()
        for t in t_l:
            t.join()
        print("主线程:",n)

  • 相关阅读:
    今日总结
    今日总结
    今日总结
    k8s controller
    深入k8s:Informer使用及其源码分析
    理解 K8S 的设计精髓之 List-Watch机制和Informer模块
    Unix domain socket 简介
    Linux网络编程——端口复用(多个套接字绑定同一个端口)
    DPVS Tutorial
    dpvs route RTF_KNI
  • 原文地址:https://www.cnblogs.com/yaya625202/p/9039043.html
Copyright © 2011-2022 走看看