python基础===基于requests模块上的协程【trip】
2023-09-14 09:12:07 时间
今天看博客get了一个有趣的模块,叫做 trip #(pip install trip)
兼容2.7版本
基于两大依赖包:TRIP: Tornado & Requests In Pair
。
先看一下simple code:
import trip @trip.coroutine def main(): r = yield trip.get('http://www.baidu.com/‘) print(r.content) trip.run(main)
于是又做了一个比较:
import time, functools import requests,trip def timeit(fn): start_time = time.time() fn() return time.time() - start_time url = 'https://www.baidu.com/' times = 100 def fetch(): r = [requests.get(url) for i in range(times)] return r @trip.coroutine def async_fetch(): r = yield[trip.get(url) for i in range(times)] raise trip.Return(r) print("[+]Non-trip cost: %ss" % timeit(fetch)) print("[+]Trip cost: %ss" % timeit(functools.partial(trip.run,async_fetch)))
#result
#[+]Non-trip cost: 14.9129998684s
#[+]Trip cost: 1.83399987221s
14.9秒和1.8秒的差距,效果显而易见!
在爬虫中的比较,普通爬虫:
import requests url = 'http://httpbin.org' s = requests.Session() def fetch(times=10): s.get('%s/cookies/set?name=value' % url) r = [s.get('%s/get' % url) for i in range(times)] print r fetch()
加入trip优化后的:
import trip url = 'http://httpbin.org' s = trip.Session() @trip.coroutine def fetch(times=10): yield s.get('%s/cookies/set?name=value' % url) r = yield [s.get('%s/get' % url) for i in range(times)] print r trip.run(fetch)
在原基础上更改不大。
顺便提一下
如果你也喜欢Python 这里有一群Python爱好者汇集在此。
关注微信公众号:【软件测试技术】,回复 888,获取QQ群号。
相关文章
- Python虚拟环境的安装和配置-virtualenv与windows下多个python版本共存
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- python 基础大纲
- Python基础笔记-元祖
- Python程序 #!/usr/bin/python 的解释
- python: 安装DeOldify库:黑白图片上色(Python 3.7.15)
- 【学习总结】Python-3-风格各异的数值类型实例
- 零基础如何快速入门Python自动化办公?
- 【Python基础】python爬虫之异步网络爬虫ǃ
- 零基础自学python?一般人我劝你还是放弃吧!!
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- python --> Python初阶 --> 基础语法 --> 条件和分支
- 100天精通Python(爬虫篇)——第44天:常用爬虫requests模块基础+代码实战
- 100天精通Python(基础篇)——第31天:时间模块time、datetime、calendar基础大总结+代码实战
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 女生零基础转行学Java还是python好?
- 我零基础转行python,是因为《得到》上的两篇文章
- 〖Python零基础入门篇(60)〗 - 随机模块 - random
- Python爬虫基础讲解:数据持久化——json 及 CSV模块简介
- python 里 模块与包得使用及其介绍 (基础小知识)
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- Python编程:shelve模块-持久化python数据
- Python数据分析与展示:科学计算基础库numpy-1
- Python编程:twine模块打包python项目上传pypi
- python基础===Excel处理库openpyxl
- python基础===pendulum '''Python datetimes made easy.'''
- python基础===中文手册,可查询各个模块
- python基础===两个list之间移动元素
- python基础===trheading 模块
- Python操作word基础
- 【Python基础】python爬虫之异步网络爬虫ǃ
- 零基础应该选择学习 java、php、前端 还是 python?