Python ThreadPoolExecutor并发小结

本文介绍了在项目中为提高效率,从单线程切换到使用Python的ThreadPoolExecutor进行并发处理的情况。通过实例展示了单线程与线程池在爬取多个网页时的性能对比,表明线程池在处理大量任务时能显著减少耗时。
摘要由CSDN通过智能技术生成

最近项目中由于需要频繁调用高德地图的接口,发现采用单线程循环调用太慢了,于是上网查了一下Python的并发,于是决定采用ThreadPoolExecutor(线程池)做并发。

在此之前,先看一下,单线程循环爬取多个网页的耗时:

import time
import requests
import threading

def get_html(url):
    print('thread id:',threading.currentThread().getName(),' 访问了:',url)
    return requests.get(url)

if __name__ == '__main__':
    URLS = ['http://www.baidu.com', 'http://www.qq.com', 'http://www.sina.com.cn', 'https://translate.google.cn', 'https://www.csdn.net']
    start = time.time()
    for url in URLS:
        response = get_html(url)
        print('url:%s ,len: %d' % (response.url, len(response.text)))
    end = time.time()
    print('耗时:'+str('%.2f'%(end - start))+'s')

运行结果如下,可以看到爬取5个网页采用单线程耗时5秒左右:

thread id: MainThread  访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值