码迷,mamicode.com
首页 > 编程语言 > 详细

守护线程

时间:2018-05-15 10:39:45      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:串行   set   class   rom   from   art   daemon   mutex   foo   

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)

技术分享图片

守护线程

标签:串行   set   class   rom   from   art   daemon   mutex   foo   

原文地址:https://www.cnblogs.com/yaya625202/p/9039043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!