天天看点

python爬虫-22-python多线程详解(1)

什么是python多线程呢?简单的理解就是原来是一个工厂里面有一个工人在干活儿,现在是一个工厂里面有好多个工人在干活儿,那么这样子是不是就提高了工作效率,这就是资本家,啊,不,这就是​

​python​

​多线程。
python爬虫-22-python多线程详解(1)

1、未使用python多线程技术

都说多线程是效率的提高,那么我们来做个对比吧,首先来看看未使用多线程之前是什么样子的吧,直接上代码:

from datetime import datetime
import time


def Eating():
    for i in range(3):
        print("正在吃第{}顿饭".format(i))
        time.sleep(1)


def Studying():
    for i in range(3):
        print("运维家第{}篇".format(i))
        time.sleep(1)


def Total():
    Start = datetime.now()
    Eating()
    Studying()
    Stop = datetime.now()
    Total_time = Stop - Start
    print("该代码运行时间为:{}".format(Total_time))


if __name__ == '__main__':
    Total()      

运行结果如下:

正在吃第0顿饭
正在吃第1顿饭
正在吃第2顿饭
运维家0颗心
运维家1颗心
运维家2颗心
该代码运行时间为:0:00:06.035070      

从上面的结果来看,他运行了​

​6​

​秒钟,那么我们使用多线程之后看看呢;

2、使用python多线程技术

import threading
from datetime import datetime
import time


def Eating():
    for i in range(3):
        print("正在吃第{}顿饭".format(i))
        time.sleep(1)


def Studying():
    for i in range(3):
        print("运维家{}颗心".format(i))
        time.sleep(1)


def Total():
    Start = datetime.now()
    # Eating()
    # Studying()
    T1 = threading.Thread(target=Eating)  # 创建线程
    T2 = threading.Thread(target=Studying)
    T1.start()  # 启动线程
    T2.start()
    T1.join()  # 在该线程结束之前,主线程一直处于等待状态
    T2.join()
    Stop = datetime.now()
    Total_time = Stop - Start
    print("该代码运行时间为:{}".format(Total_time))


if __name__ == '__main__':
    Total()      

运行结果如下:

正在吃第0顿饭
运维家0颗心
正在吃第1顿饭
运维家1颗心
正在吃第2顿饭
运维家2颗心
该代码运行时间为:0:00:03.023333      

从上面我们就可以看到他的最直观的时间变化,本来一个人干的活儿,现在通过​

​python​

​​的多线程​

​threading​

​技术,变成了两个人干,这样子的话就减少了一半的时间。

3、python查看线程数量和当前线程的名字

方法:

threading.enumerate()  # 查看线程数量
threading.current_thread()  # 查看当前线程的名字      

放到上面的代码中之后,总体代码如下:

剩余内容请转至VX公众号 “运维家” ,回复 “183” 查看。

------ “运维家” ,回复 “183”  ------

------ “运维家” ,回复 “183”  ------

------ “运维家” ,回复 “183”  ------

系统运维工程师,运维工程师技能要求,成都运维工程师驻场开发收费标准,t3网络运维工程师,运维工程师社会需求,运维工程师修炼手册;

oppo高级运维工程师社招,运维工程师员招聘要求,中级运维工程师技术水平,大数据运维工程师月薪多少,运维工程师的个人发展计划,应届生面试运维工程师穿着;