python:多协程爬取数据(队列)

本文介绍了Python中利用多协程和队列进行异步爬虫实现的方法,通过gevent库创建任务并使用queue模块进行任务调度,达到提高爬取效率的目的。内容包括异步和同步的概念比较,多协程的工作原理,以及并发执行与并行执行的区别。
摘要由CSDN通过智能技术生成
一、知识点理解

异步:在一个任务未完成时,就可以执行其他多个任务,彼此不受影响。

同步:一个任务结束后才能启动下一个。

比较:异步执行任务会比同步更节省时间,能减少不必要的等待。

多协程(非抢占式异步技术):一个任务在执行过程中,如果遇到等待,就先去执行其他的任务,当等待结束,再回来继续之前的任务。在计算机的世界中这些任务的回切速度非常迅速,看上去就像多个任务被同时执行一样。

要求:实现多个爬虫同时执行任务,实现异步的爬虫方式。

二、多协程爬虫实现

前提:安装gevent库:pip install gevent -i https://pypi.douban.com/simple

from gevent import monkey  #导入monkey模块
monkey.patch_all()  #patch_all()方法将程序变为异步运行
import gevent, time, requests

简单实现:(创建函数,创建任务,执行所有任务)

1、定义一个爬虫函数(例如:def crawler(url))

2、用gevent.spawn(函数名,函数)函数创建任务(eg:gevent.spawn(crawler, url))

gevent只能处理gevent的任务对象,不能直接调用普通函数,需要借助gevent.spawn()来创建任务对象,参数为要调用的函数名以及被调用的函数的所有参数<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值