线程模块: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')