python爬虫之爬虫性能篇
一、首先想到的是for循环,单线程爬取每个url,但是如果有url出现了问题,后面的url就得等,性能低。
二、我们考虑线程池的问题,下面我们定义了线程池里面最多10个任务,也就是说最多同一时间只能有10个爬行任务,这样的话就是自己干自己的互相不影响,加上主线程的话是n+1个线程,缺点也很明显,耗时最长时间取决于最长的那个任务使用的时间。pool.shutdown(True)主线程等待子线程执行完城后,再退出。
import requests
from concurrent.futures import ThreadPoolExecutor def fetch_request(url):
requests.get(url) pool = ThreadPoolExecutor(10)
url_list = [
'https://www.baidu.com',
'https//:www.douban.com'
] for url in url_list:
pool.submit(fetch_request,url) pool.shutdown(True)
简单线程池
三、多进程,进程池的基本写法。
import requests
from concurrent.futures import ProcessPoolExecutor def fetch_request(url):
requests.get(url) pool = ProcessPoolExecutor(10)
url_list = [
'https://www.baidu.com',
'https//:www.douban.com'
] for url in url_list:
pool.submit(fetch_request,url) pool.shutdown(True)
简单多进程
总结:
1、首先利用for循环肯定是最次的串行写法,其次我们讨论多进程和多线程的效率。
2、多进程首先要开通很多的内存空间,耗空间。IO方面的话两者基本一样,我们知道线程是存在于进程里面的,所以得出多线程是效率最高的。 那么问题来了,例如我开了线程池,里面同时可执行10个线程,那么这10个线程同时执行的话,得等待返回response,那就在那傻傻的等,我们还想让他干点别的事怎么办?这里我们就要涉及到了异步io,其实我个人理解就是比线程更加小的线程(微线程),主要特点是非租塞,回调(成没成都会告诉你),主流的技术asyncio、gevent、Twisted、
Tornado(Tornado不只是web框架哦)
python爬虫之爬虫性能篇的更多相关文章
- Python自动化测试面试题-性能篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-接口篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-经验篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-Linux篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-MySQL篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-Redis篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-编程篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python自动化测试面试题-Selenium篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python爬虫入门这一篇就够了
何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本.万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息. 爬虫三要素 抓取 分析 存储 基础 ...
- Python实战:爬虫的基础
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...
随机推荐
- USB知识汇总
概述 通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通 ...
- forall 与 for loop 案例
create table a_tab(ver number,id number);create table b_tab(ver number,id number);set timing on DECL ...
- 最长回文(manacher模板)
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...
- js获取访问IP、地区、、当前操作浏览器
js获取IP.地区.当前操作浏览器有什么用呢? 我的回答是用处很多,比如现在的异地登录和对用户常用浏览器做数据分析等. 源代码如下:index.html <!DOCTYPE html> & ...
- Matconvnet笔记(一)
参考网址:http://www.vlfeat.org/matconvnet/ 内容参考博客:http://blog.sina.com.cn/s/blog_92cd3a1c0102x1ch.html M ...
- 使用python进行utf9编码和解码
在2005年4月1日(也就是愚人节),IEEE的rfc4042文件规定了utf9和utf18这2个所谓的Unicode的高效转换格式. 具体的格式说明,有兴趣的话点击上面的rfc4042链接去观看. ...
- mybatis-plus学习笔记(一)
一.概述 概述见官网,不再赘述(简称mytatis-plus为MP) 在mybatis的基础之上,重点关注新特性:https://mp.baomidou.com/guide/#%E7%89%B9%E6 ...
- Pessimistic and Optimistic locking
事务隔离通常通过锁定任何对事务中资源的访问来实现的.总的来说,有两种方法针对事务的锁定:乐观锁(Pessimistic locking)和悲观锁(Optimistic locking) 悲观锁(Pes ...
- Node.js配合jQuery UI autocomplete的应用
Node.js擅长的领域为: 不需要很多运算 吞吐量要求高 进消息轻并且要求快 出消息轻并且要求快 网上的例子都是socket.io的,我一直在想到底能用在什么地方?根据node.js的优点(擅长领域 ...
- pycharm 安装和首次使用
由于本人也是开发语言的学习小白,所以对于开发时使用的工具也不算太熟悉,不过这里还是要推荐一下本人使用过 的两款工具: 1.pycharm :2.eclipse 这是我用的比较顺手的两个工具当然这两个 ...