• 守护线程


    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)

  • 相关阅读:
    【项目】项目188
    【项目】项目190
    【项目】项目192
    【项目】项目189
    【项目】项目185
    SpringBoot统一Api接口返回格式
    MySQL判断库、表、列是否存在
    java.net.SocketException: Connection reset by peer: socket write error
    NOI Online 2022 一游
    寒假 杂题题解
  • 原文地址:https://www.cnblogs.com/yaya625202/p/9039043.html
Copyright © 2020-2023  润新知