目录
一.线程
线程:进程内部进行CPU调度的基本单位,一个进程中至少存在一个线程
●模块:threading
●创建线程: Thread(target= func [args= (value1 ,value2,......)])
●target,指定线程需要执行的任务(通常是函数名或者方法名,不要加括号)
●args,指定线程执行的任务需要传入的实参,以元组形式传入
●启动线程:start( )
import threading
import time
def f1():
for i in range(100):
print('.')
time . sleep(0.2)
def f2():
for i in range (100):
print('.')
time .sleep(0.2)
if __ name__ ='- main__' :
th1 = threading. Thread(target=f1) #创建子线程
th2 = threading .Thread(target=f2)
th1.start()#启动线程
th2.start()
print('主线程结束' ) #该段代码中,主线程和子线程都是互相独立,没有先后关系
二.线程守护
作用:子线程跟随主线程结束而结束
方法:setDaemon(True),必须在线程启动前设置
import threading
import time
def f1():
for i in range(100):
print('.')
time . sleep(0.2)
def f2():
for i in range (100):
print('.')
time .sleep(0.2)
if __ name__ ='- main__' :
th1 = threading.Thread(target=f1) #创建子线程
th2 = threading.Thread(target=f2)
th1.setDaemon(True) #线程守护
th2.setDaemon(True)
th1.start()#启动线程
th2.start()
print('主线程结束' ) #该段代码中,主线程结束,子线程会跟着结束
三.线程阻塞
作用:主线程在子线程结束后结束
方法:join(),需要在线程启动后设置
import threading
import time
def f1():
for i in range(100):
print('.')
time . sleep(0.2)
def f2():
for i in range (100):
print('.')
time .sleep(0.2)
if __ name__ ='- main__' :
th1 = threading.Thread(target=f1) #创建子线程
th2 = threading.Thread(target=f2)
th1.start()#启动线程
th2.start()
th1.join() #线程阻塞
th2.join()
print('主线程结束' ) #该段代码中,主线程在子线程结束后结束