一、介绍
在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。
概念:线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
程序启动默认会有一个主线程,程序猿自己创建的线程可以成为子线程,多线程可以完成多任务。
1.导入线程模块
import threading
2.线程类Thread参数说明
Thread([group[, target[, name[, args[, kwargs]]]]])
group:线程组,目前只能使用None
target:执行的目标任务名
args:以元祖方式给执行任务传参
kwargs:以字典方式给执行任务传参
name:线程名,一般不用设置
3.启动线程
start方法
二、线程实例
1.多线程的使用
import threading
import time
def sing():
#获取当前线程
current_thread = threading.current_thread()
print('sing', current_thread)
for i in range(3):
print('sing...')
time.sleep(0.2)
def dance():
#获取当前线程
current_thread = threading.current_thread()
print('dance', current_thread)
for i in range(3):
print('dance...')
time.sleep(0.2)
if __name__ == '__main__':
# 获取当前线程
current_thread = threading.current_thread()
print('main_thread', current_thread)
#创建子线程
sing_thread = threading.Thread(target=sing, name='sing_thread')
dance_thread = threading.Thread(target=dance, name='dance_thread')
#启动子线程
sing_thread.start()
dance_thread.start()
#运行结果
main_thread <_MainThread(MainThread, started 21476)>
sing <Thread(sing_thread, started 14472)>
sing...
dance <Thread(dance_thread, started 22648)>
dance...
dance...
sing...
dance...
sing...
2.线程执行带参数
import threading
def show_info(name, age):
print(name, age)
if __name__ == '__main__':
#以元祖方式传参,元祖元素要和函数参数顺序保持一致
sub_thread = threading.Thread(target=show_info, args={
'张三', 30})
sub_thread.start()
#字典方式传参,字典的key要和函数里面的参数名保持一致,没有顺序要求
sub_thread = threading.Thread(target=show_info, kwargs={
'age'