一.背景
爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,采用串行的方式执行,只能等待爬取一个结束后才能继续下一个,效率会非常低。
需要强调的是:串行并不意味着低效,如果串行的都是纯计算的任务,那么cpu的利用率仍然会很高,之所以爬虫程序的串行低效,是因为爬虫程序是明显的IO密集型程序。
二.同步,异步,回调机制
在编写爬虫是,性能的消耗主要在IO请求中,当单进程单线程模式下 请求URL时,必然会引起等待,从而使得请求整体变慢。
1.同步:提交一个任务后就在原地等待任务结束,等到拿到任务的结果后在继续下一行代码,效率低下。
import requests def fetch_async(url): response = requests.get(url) return response #返回信息:response.text... url_list = ['http://www.jiemian.com','http://www.bing.com'] for url in url_list: print(fetch_async(url))
1.同步执行
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫篇之 性能相关 - Python技术站