1 import time
2 import threading
3 start = time.time()
4 print('欢迎来到相声大会')
5 def music(name):
6 print(threading.current_thread())
7 print('开始播放%s' %name)
8 time.sleep(2)
9 print('播放结束')
10 def movie(name):
11 print(threading.current_thread())
12 print('开始放映%s' %name)
13 time.sleep(5)
14 print('放映结束')
15
16 # music('我想,我想')
17 # movie('肖申克的救赎')
18
19 t1 = threading.Thread(target=music,args=('我想,我想',)) #创建线程t1
20 t2 = threading.Thread(target=movie,args=('肖申克的救赎',)) #创建线程t2
21 t1.setDaemon(True) #t1守护主线程:主线程跑完后结束,不等t1
22 t2.setDaemon(True) #t2守护主线程:主线程跑完后结束,不等t2
23 t1.start() #启动线程
24 t2.start()
25 # t1.join() #t1执行完之前,下面的主线程将阻塞
26 # t2.join() #t2执行完之后,下面的主线程才可以开始。同上
27 print(threading.active_count()) #打印正在运行的线程数
28 print('晚会结束')
29 end = time.time()
30 print(end-start)
1.以上单线程执行7s,多线程执行5s。体现了多线程的优势
2.(1)守护线程是指:子线程守护主线程;
(2)主线程结束程序就结束,不用等子线程
(3)主线程不等守护者,但要等没守护者