异步请求Python库 grequests的应用和与requests库的响应速度的比较

requests库是python一个优秀的HTTP库,使用它可以非常简单地执行HTTP的各种操作,例如GET、POST等。不过,这个库所执行的网络请求都是同步了,即cpu发出请求指令后,IO执行发送和等待等操作,在这段IO执行的时间里,cpu什么也不做,这样cpu的计算能力就被浪费了。所以,可以尝试把网络请求修改为异步的,也就是在IO发挥作用的这段时间,CPU去做这个程序里的其他事情,等IO收到响应的数据,CPU回来处理。偶然发现下面的帖子特分享与大家,并与requests库进行简单响应速度比较:

建议先阅读原博主文章:

感谢原博主的分享精神,转到原博地址:  HTTPS://WWW.LETIANTIAN.ME/2014-10-04-ASYNCHRONOUS-REQUESTS/

-----------------------------------华丽的分割线-----------------------------------------------------------------------

下面是对 grequests库和requests库的响应比较

# -*- coding: utf-8 -*-
import grequests
import time
import requests
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)

# 同网络环境下比较结果

now = int(time.time())
timeArray = time.localtime(now)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print otherStyleTime
urls = [‘http://letiantian.me/‘] * 10
# ------------------- grequests 库请求-------------------------------------
# reqs = [grequests.get(url) for url in urls] # 用时1秒左右
# response = grequests.map(reqs)
# print response[9].status_code
# ------------------- requests 库请求-------------------------------------
reqs = [requests.get(url) for url in urls] # 用时7秒
print reqs[9].status_code
now2 = int(time.time())
timeArray2 = time.localtime(now2)
otherStyleTime2 = time.strftime("%Y--%m--%d %H:%M:%S", timeArray2)
print otherStyleTime,‘-------------‘,otherStyleTime2

pasting

原文地址:https://www.cnblogs.com/fanjp666888/p/9112786.html

时间: 2024-08-25 18:28:30

异步请求Python库 grequests的应用和与requests库的响应速度的比较的相关文章

python接口测试之requests库(一)

一.requests库的安装 requests库作为第三方库,需要安装 cmd模式下,运行pip install requests 二.在学习如何发送请求之前,我们先来了解一下requests库,查看一下他有什么方法 print dir(requests) 三.模拟发送get请求 1.发送不带参数的get请求 r = requests.get('https://api.github.com/events') 返回的是一个response对象,该对象中包含的内容,通过dir(r) 2.发送带参数的

python导入requests库一直报错原因总结 (文件名与库名冲突)

花了好长时间一直在搞这个 源代码: 一直报如下错误: 分析原因: 总以为没有导入requests库,一直在网上搜索各种的导入库方法(下载第三方的requests库,用各种命令工具安装),还是报错 后来找到一个命令pip install requests,说明安装python3的时候,已经自动勾选安装了requests库了 进入python的安装目录查看,pip等均已自带了(太浪费精力了) 后来无意间看到有人说,如果各种都配置好了,还是报错,有可能你的python程序目录中某个文件名字与库名字一样

Python爬虫之Requests库入门

目录 Requests库 Requests库的7个主要方法 Requests库的get()方法 Response对象的属性 理解Requests库的异常 爬取网页的通用代码框架 HTTP协议 协议对资源的操作 理解PATCH和PUT的区别 HTTP协议与Requests库 Requests库 Requests库的7个主要方法 方法 说明 requests.request() 构造一个请求,支撑以下各方法的基础方法 requests.get() 获取HTML网页的主要方法,对应于HTTP的GET

requests库和urllib包对比

python中有多种库可以用来处理http请求,比如python的原生库:urllib包.requests类库.urllib和urllib2是相互独立的模块,python3.0以上把urllib和urllib2合并成一个库了,requests库使用了urllib3.requests库的口号是"HTTP For Humans",为人类使用HTTP而生,用起来不知道要比python原生库好用多少呢,比起urllib包的繁琐,requests库特别简洁和容易理解.话不多说,代码为证~~~ 下

Linux CentOS 6.5服务器上安装pip,requests库

今天在服务器上部署Python程序,发现服务器上缺Requests库,于是设法装上,CentOS版本怎么安装Python的pip,我之前给出的Ubuntu下apt-get的方法 首先看下服务器系统版本 # cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 首先需要先安装下pip yum install python-pip 然后安装requests, pip install requests 在centOS6.5 ,pyth

小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基

Python使用grequests并发发送请求

目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快.但是requests发送请求是串行的,即阻塞的.发送完一条请求才能发送另一条请求. 为了提升测试效率,一般我们需要并行发送请求.这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起来,都相对麻烦. grequests是K神基于gevent+requests编写的一个并发发送请求的库,

大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。

python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url, **kwargs)-->session.request(method="get", url=url, **kwargs)-->session.send(request, **kwargs)-->adapter.send(request, **kwargs)-->

【Java&Android开源库代码剖析】のandroid-async-http(如何设计一个优雅的Android网络请求框架,同时支持同步和异步请求)开篇

在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正式开篇来详细介绍这个库的实现,同时结合源码探讨如何设计一个优雅的Android网络请求框架.做过一段时间Android开发的同学应该对这个库不陌生,因为它对Apache的HttpClient API的封装使得开发者可以简洁优雅的实现网络请求和响应,并且同时支持同步和异步请求. 网络请求框架一般至少需要具备如下几个组件:1