微技术爱好者
自由的编程学习平台
前言
本篇要从小7的朋友说起。数据组的他收到业务提交的三个excel。要求将其中的地址转成经纬度,然后匹配最近的银行网点。现用的转换程序约二秒出一条记录,三个excel总数据量约十几万。这也难怪朋友会一脸的愁。
正文
0x01使用scrapy爬虫框架
原因有以下几点:
上次使用scrapy爬携程评论现在还是比较熟悉
scrapy使用的是异步请求(重点)
框架设计有数据持久化
但在程序中,速度任然很慢。没去深究原因,转面使用aiohttp+asyncio处理。
0x02试用asyncio
asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。
asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO
asyncio代码,40个并发跑起真的非常快。7万的数据,半个小时搞定。
0x03处理后续结果
处理下结果文件,最后转成excel,十几万的数据处理完成。
结束语
使用asyncio上手还是比较简单。主要是理解事件循环,协程和任务,future的关系。
参考:
Python黑魔法 —- 异步IO( asyncio) 协程
python异步编程之asyncio(百万并发)
领取专属 10元无门槛券
私享最新 技术干货