Python全系列 教程
3567个小节阅读:5929.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
之前的代码,主线程不会等待子线程结束。
如果需要等待子线程结束后,再结束主线程,可使用join()方法。
xxxxxxxxxx
#encoding=utf-8
from threading import Thread
from time import sleep
def func1(name):
for i in range(3):
print(f"thread:{name} :{i}")
sleep(1)
if __name__ == '__main__':
print("主线程,start")
#创建线程
t1 = Thread(target=func1,args=("t1",))
t2 = Thread(target=func1,args=("t2",))
#启动线程
t1.start()
t2.start()
#主线程会等待t1,t2结束后,再往下执行
t1.join()
t2.join()
print("主线程,end")
在行为上还有一种叫守护线程,主要的特征是它的生命周期。主线程死亡,它也就随之死亡。在python中,线程通过setDaemon(True|False)
来设置是否为守护线程。
守护线程的作用:
xxxxxxxxxx
#encoding=utf-8
from threading import Thread
from time import sleep
class MyThread(Thread):
def __init__(self,name):
Thread.__init__(self)
self.name =name
def run(self):
for i in range(3):
print(f"thread:{self.name} :{i}")
sleep(1)
if __name__ == '__main__':
print("主线程,start")
#创建线程(类的方式)
t1 = MyThread('t1')
#t1设置为守护线程
t1.setDaemon(True)#3.10后被废弃,可以直接:t1.daemon=True
#启动线程
t1.start()
print("主线程,end")
实时效果反馈
1. 如下多线程的说法,错误的是:
A 主线程中执行t1.join()
,则主线程会等待t1线程执行完后,再结束
B 守护线程,主要的特征是它的生命周期。主线程死亡,它也就随之死亡
C 守护线程最典型的应用就是 GC (垃圾收集器)
D 主线程中执行t1.join()
,则t1线程会等待主线程执行完后,再结束
答案
1=>D