Python多线程

Python python 学习记录 多线程 阅读次数:173 本页字数: 2343 发布日期:2019-12-15 最后更新:2020-01-19 20:23:10

关于多线程
多线程主要用途就是提高程序和 CPU 的使用率,从而达到高效运行,看起来像同一时间能完成多件事情。
下面举个例子对比下
以爬取豆瓣电影top250为例:

不使用多线程时

if __name__ == '__main__':
    start_time = time.time()
    for i in range(0,10):
        main(i)
    end_time = time.time()
    dtime = end_time - start_time
    print("程序运行时间:%.8s s" % dtime)

看下结果

一共用时3.4s

使用多线程时

if __name__ == '__main__':
    start_time = time.time()
    page = [i for i in range(0,10)]
    with concurrent.futures.ThreadPoolExecutor(max_workers = 10) as executor:
        executor.map(main,page)
    end_time = time.time()
    dtime = end_time - start_time
    print("程序运行时间:%.8s s" % dtime)

结果:

耗时0.36s

对比

  • 单线程用时:3.45s
  • 多线程用时:0.36s

一件不幸的事
在测试完多线程效果之后

对的,你没看错

以下是代码

import requests
from lxml import etree
import time
import concurrent.futures

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}

def request_douban(url):
    try:
        response = requests.get(url, headers = headers)
        html = response.text
        data = etree.HTML(html)
        movie_name = data.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
        return movie_name
    except:
        return None

def main(page):
    url = "https://movie.douban.com/top250?start=" + str(page * 25) + "&filter="
    name_list = request_douban(url)
    print(name_list)
    for name in name_list:
        print(name, end='\n')


# if __name__ == '__main__':

# 使用多线程
#     start_time = time.time()
#     page = [i for i in range(0,10)]
#     with concurrent.futures.ThreadPoolExecutor(max_workers = 20) as executor:
#         executor.map(main,page)
#     end_time = time.time()
#     dtime = end_time - start_time
#     print("程序运行时间:%.8s s" % dtime)


# 不使用多线程
#     start_time = time.time()
#     for i in range(0,10):
#         main(i)
#     end_time = time.time()
#     dtime = end_time - start_time
#     print("程序运行时间:%.8s s" % dtime)

1条评论

    岁月如梭

    游客 安卓派 65 天前回复

小编
关于本站
站点字数: 10.81 W
在线人数:1人
运行时间: 0年217天19小时26分
站长格言: 生命不息,折腾不止,就是喜欢花里胡哨
听听音乐
2020 © Typecho Theme Violet 黔ICP备19012043号
您是第 9893 位访客