5.1.14 守护线程

守护进程与守护线程的区别:

守护进程:主进程代码运行完后,守护进程就终止。

守护线程:主进程运行完后,守护线程就终止。不过,如果主线程有多个线程的话,

其他线程未执行完,主线程就还在。守护线程会等主进程下的所有线程都执行完才终止。

 

守护进程:

from threading import Thread
import time

def sayhi(name):
    time.sleep(2)
    print('%s say hello' %name)

if __name__ == '__main__':
    t=Thread(target=sayhi,args=('egon',))
    # t.setDaemon(True) #必须在t.start()之前设置
    t.daemon=True
    t.start()

    print('主线程')
    print(t.is_alive())

运行结果:

主线程
True
View Code

 

守护线程:

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-------")

运行结果:

123
456
main-------
end123
end456

 

守护线程2:

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)

    t2.daemon=True
    t1.start()
    t2.start()
    print("main-------")

运行结果:

123
456
main-------
end123
View Code

 

posted @ 2018-06-16 20:23  beallaliu  阅读(105)  评论(0编辑  收藏  举报