python之多线程---join的作用

我们直接看代码:

 代码如下:

 1 # encoding: utf-8
 2 
 3 import threading
 4 import time
 5 '''
 6 进程: 启动的应用程序
 7 线程:程序中实际做事情的单元
 8 
 9 主线程和子线程
10 进程启动之后会自动启动一个主线程,主线程启动若干子线程,实现多线程
11 (1)使用join(),使主线程在任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程再终止
12 (2)join一般加在所有线程启动之后
13 '''
14 
15 
16 class MyThread(threading.Thread):
17     def run(self):  # run方法前面的圈圈可以看出是复写了线程原本的run方法
18         print(1)
19         time.sleep(0.1)
20         print(2)
21         time.sleep(0.1)
22         print(3)
23         time.sleep(0.1)
24 
25 print('主线程开始啦!')
26 th1 = MyThread()
27 th2 = MyThread()
28 th3 = MyThread()
29 
30 # th1.start()
31 # th2.start()
32 # th3.start()
33 # 
34 # th1.join()
35 # th2.join()
36 # th3.join()
37 
38 # 如下情况,就是线程2需要等线程1执行完毕之后再执行,线程3需要等线程2执行完毕之后再执行,这样的话,三个线程就不是并行执行的了
39 th1.start()
40 th1.join()
41 th2.start()
42 th2.join()
43 th3.start()
44 th3.join()
45 
46 print("主线程结束啦!")

 

如果,我们改成下面的情况,将join加在所有线程启动之后,我们再来看结果。

由上可以看出,将join()放在所有线程启动之后的话,线程是并行执行的!

代码如下:

 1 # encoding: utf-8
 2 
 3 import threading
 4 import time
 5 '''
 6 进程: 启动的应用程序
 7 线程:程序中实际做事情的单元
 8 
 9 主线程和子线程
10 进程启动之后会自动启动一个主线程,主线程启动若干子线程,实现多线程
11 (1)使用join(),使主线程在任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程再终止
12 (2)join一般加在所有线程启动之后
13 '''
14 
15 
16 class MyThread(threading.Thread):
17     def run(self):  # run方法前面的圈圈可以看出是复写了线程原本的run方法
18         print(1)
19         time.sleep(0.1)
20         print(2)
21         time.sleep(0.1)
22         print(3)
23         time.sleep(0.1)
24 
25 print('主线程开始啦!')
26 th1 = MyThread()
27 th2 = MyThread()
28 th3 = MyThread()
29 
30 th1.start()
31 th2.start()
32 th3.start()
33 
34 th1.join()
35 th2.join()
36 th3.join()
37 
38 # 如下情况,就是线程2需要等线程1执行完毕之后再执行,线程3需要等线程2执行完毕之后再执行,这样的话,三个线程就不是并行执行的了
39 # th1.start()
40 # th1.join()
41 # th2.start()
42 # th2.join()
43 # th3.start()
44 # th3.join()
45 
46 print("主线程结束啦!")

 

posted @ 2020-05-20 18:00  anna1210  阅读(347)  评论(0编辑  收藏  举报