主线程不会等子线程执行结束后继续执行。
主线程执行结束后,程序并没有运行结束,会等到子线程执行结束后才结束。
import threading
import time
def task():
print(“hello world”)
time.sleep(1)
print(‘hello!’)
if name == ‘main’:
for i in range(5):
t = threading.Thread(target=task)
t.start()
print(‘我是主线程’)
程序运行结果如下:
程序运行耗时一秒钟。运行逻辑为:五次for循环中,第一次循环中t = threading.Thread(target=task)创建了第一个子线程后,第一个子线程开始执行,即第一次执行task()函数,输出第一个hello world后,强制等待一秒钟,在这个一秒钟内,主线程不会等待子线程运行。于是主线程继续执行,开始第二次循环,几乎在同一时间,五次循环执行完毕,即主线程执行完成,输出了五个“hello world”和一个“我是主线程”字符串。大约一秒钟后,五个子线程同时执行完成,输出了五个“hello!”字符串。
==