线程模块:import threading
线程类Thread参数:group(线程组) target:执行的目标的任务名
args:以元组的方式给执行任务进行传参 *args可以传任意多个参数
kwargs以字典方式给执行任务传参
name:线程名
步骤:
1.导入模块 threading
2.创建子线程 Thread()类
3.守护线程 setDaemon #主线程执行完子线程也会跟着结束
4.启动子线程start()
5.阻塞主线程join() #a.join() a为子线程,阻塞主线程,主线程会等待子线程a执行完再执行下面的代码
单线程:
import time t1=time.time() def dance(name):print('%s is dancing' %name)time.sleep(1)#睡眠一秒if __name__=='__main__':for i in range(4):dance('lihailu') t2=time.time() print(t2-t1)
结果为:
lihailu is dancing
lihailu is dancing
lihailu is dancing
lihailu is dancing
4.001209497451782 #四遍运行时间,后边为睡眠时间
多线程:
import time import threading t1=time.time() def dance(name):print('%s is dancing' %name)time.sleep(1)#睡眠一秒if __name__=='__main__':for i in range(4):#创建线程t=threading.Thread(target=dance,args=('lihailu',))#一个元素的元组也要加,t.start()#启动线程 t2=time.time() print(t2-t1)
输出结果为:
lihailu is dancing
lihailu is dancing
lihailu is dancing
lihailu is dancing0.02975940704345703
多线程进阶举例:
import time from threading import Thread def funa():print('study')time.sleep(2)print('dark') def funb():print('six')time.sleep(2)print('money') if __name__=='__main__':#程序文件如果直接运行则执行下面的代码#创建子线程f1=Thread(target=funa)f2=Thread(target=funb)#设置守护线程f1.setDaemon(True)f2.setDaemon(True)#开启子线程f1.start()f2.start()#阻塞主线程f1.join()#主线程等待f1执行完再执行f2.join()print('这是主线程,haha')