1. 线程模块threading中的Thread
python的线程使用threading模块中的Thread类, 生成一个线程需要为Thread传递两个参数,target参数传递函数名,args参数传递函数需要的参数,它必须是一个元组, 如t1 = Thread(target=a, args=())
2. 当主线程退出时kill掉子线程
使用Thread类的setDaemon方法,将其设置为True可以将子线程设置为守护线程,即当主线程退出时守护线程kill掉.
代码示例
from threading import Thread
from time import sleep
def a():
print(123)
sleep(2)
print(456)
def b():
print(789)
sleep(2)
print(1011)
if __name__ == '__main__':
print('start')
t1 = Thread(target=a, args=())
t2 = Thread(target=b, args=())
t1.setDaemon(True)
t2.setDaemon(True)
t1.start()
t2.start()
print('end')
运行结果
start
123
789
end
3. 主线程等待子线程执行完成以后再继续执行
使用子线程的join方法
代码示例
from threading import Thread
from time import sleep
def a():
print(123)
sleep(2)
print(456)
def b():
print(789)
sleep(2)
print(1011)
if __name__ == '__main__':
print('start')
t1 = Thread(target=a, args=())
t2 = Thread(target=b, args=())
t1.start()
t2.start()
t1.join()
t2.join()
print('end')
运行结果
start
123
789
1011
456
end
4. 继承Thread类实现线程
当线程函数的逻辑比较复杂时需要采用继承Thread类的方法实现线程,之后重写run方法.
代码示例
class A(Thread):
def __init__(self, name):
super().__init__(name=name)
def run(self) -> None:
print(123)
sleep(2)
print(456)
网友评论