python多线程教程

多线程是指可以在同一个时间段执行多个任务,例如你想爬取某个网站的图片,1s可以打印出20个资源链接,但是如果使用

requests.get(url)资源会有一个锁定的状态,也就是第一个url请求完成后才会执行第二个url请求,假设请求一个资源要1s,20

个资源就要20s,但是使用多线程,就可以在1s中的打印时间内,把所有任务都交给一个线程,这样2s就能把所有资源请求到,

这样就节省了10倍的时间。下面教大家如何使用多线程

第一步:import threading

一些查看线程状态的功能

# print(threading.active_count())  #此时在运行的线程数
# print(threading.enumerate())     #哪些线程在工作
# print(threading.current_thread())#目前运行的线程

我们先定义一个乘法的工作

def mutiply():   #定义线程的工作
    for i in range(1,200):
        time.sleep(1)    
        print(10*10)#这里使用休眠是为了更清晰的展现多线程如何工作,使用time.sleep()要先import time

然后定义一个加法的工作

def add():    #定义线程的工作
    for i in range(1, 200):
        time.sleep(1)
        print(25+25)

然后我们定义一个线程

mutiply_thread=threading.Thread(target=mutiply) #加入乘法线程,target后面为要做的事
mutiply_thread.start()                          #线程定义好后必须start(),不然不会执行 
add_thread=threading.Thread(target=add)         #加入加法线程,target后面为要做的事
add_thread.start()                              #线程开始            

我们通过运行可以发现

这些加法乘法的工作都是并行的,也就是在执行加法的同时也在执行乘法,第一行是线程数,后面两行是线程运行状态,我们也可以把查看状态的代码加入两个函数中实时查看状态。

我们可以理解为,程序本来是一直向下运行的,一般程序是要一个一个块执行完后才会执行下一个块,这期间有一个锁死状态

,但是多线程的话,把工作加入线程后就继续执行下一个块,这期间加入的线程和后面的块并行工作。下面是程序的代码。

import threading #import包
import time

def mutiply():   #定义线程的工作
    for i in range(1,200):
        time.sleep(1)
        print(10*10)
def add():
    for i in range(1, 200):
        time.sleep(1)
        print(25+25)
#def main():         #要做的事

#if __name__=='__main__':
    #main()
mutiply_thread=threading.Thread(target=mutiply) #加入线程,target后面为要做的事
mutiply_thread.start()
add_thread=threading.Thread(target=add)
add_thread.start()

print(threading.active_count())  #此时在运行的线程数
print(threading.enumerate())     #哪些线程在工作
print(threading.current_thread())#目前运行的线程

猜你喜欢

转载自blog.csdn.net/ecin520/article/details/88108693