守护线程

Posted 丫丫625202

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了守护线程相关的知识,希望对你有一定的参考价值。

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)

以上是关于守护线程的主要内容,如果未能解决你的问题,请参考以下文章

守护线程与守护进程

JUC并发编程 -- 主线程与守护线程

54_并发编程-线程-守护线程

网络编程之多线程——守护线程

2-5 守护线程

5.1.14 守护线程