前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-并发下载-gevent库

Python-并发下载-gevent库

作者头像
小团子
发布2019-07-18 15:20:30
1.3K0
发布2019-07-18 15:20:30
举报
文章被收录于专栏:数据云团数据云团

一、协程实现并发爬取

协程,就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭到阻塞,就切换到下一个任务继续执行,从而节省阻塞所占用的时间。

  • 单进程下协程和多线程并没有很大区别,相比之下,协程更节省资源、效率更高,并且更安全。
  • 而多进程下,多线程可以利用多核资源,这是单进程的协程模型做不到的。

二、协程爬虫的流程分析

由于协程的切换不像多线程调度那样耗费资源,所以不用严格限制协程的数量。

① 将要爬取的网址存储在一个列表中,由于针对每个网址都要创建一个协程,所以需要准备一个待爬取网址列表。

② 为每个网址创建一个协程并启动该协程。协程会依次执行,爬取对应的网页内容。如果一个协程在执行过程中出现网络阻塞或其它异常情况,则马上执行下一个协程。由于协程的切换不用切换线程上下文,消耗比较小,所以不用严格限制协程的数量。每个协程负责爬取网页,并将网页中的目标数据解析出来。

③ 将爬取到的目标数据存储在一个列表中。、

④ 遍历数据列表,将数据存储在本地文件中。

三、第三方库 gevent

gevent 是一个基于协程的 Python 网络库。

代码语言:javascript
复制
# 安装:
pip install gevent

引用

代码语言:javascript
复制
import gevent

① gevent 库的常用方法

  • gevent.spawn()

创建并启动协程

  • gevent.joinall()

等待所有协程执行完毕

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档