十万数据处理

微技术爱好者

自由的编程学习平台

前言

本篇要从小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(百万并发)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908G1IROG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券