python爬虫怎样利用多线程
以下是我用来测试同步请求和多线程异步请求效率的代码:from __future__ import print_functionimport timefrom multiprocessing.dummy import Pool as ThreadPoolfrom pprint import pprintimport logginglogging.basicConfig( level=logging.INFO, format=\u0026#39; %(message)s\u0026#39;,)def request(url): import requests resp = requests.get(url, timeout=5) resp.raise_for_status() return resp.status_codeurls = # urls = * 80time1 = time.time()# Make the Pool of workerspool = ThreadPool(4)# Open the urls in their own threads# and return the resultstry: results = pool.map(request, urls)except Exception as e: print("\u0026gt;"*50, e) raise#close the pool and wait for the work to finishpool.close()pool.join()pprint(results)time2 = time.time()print("-" * 100)for url in urls: print(request(url))time3 = time.time()print(time2 - time1, time3 - time2)
■网友
初心是想爬的更快,但多线程、多进程并不能从根本上解决问题,更好的姿势是异步,具体实现可以基于协程,也可以实现自己的异步抓取框架,懒得做也有现成的,比如Scrapy。相信题主更关心的是,什么是异步,为什么异步好用,请阅读下面的小故事。-- 故事时间 --镜头一:有一个快递公司,我们一大波人去寄快递,只有小李在值班。小李让我们排队,依次寄。镜头二:还是这家公司,公司老板发现某个时间段寄快递的人很多,为了提升处理速度,又安排了小刘、小王值班,一共仨人。镜头三:年终将至,寄快递的人更多了,经过小李评估,需要至少20个人来值班,老板有些懵了。经过几个月的值班,小刘发现了这种工作方式的问题,有些寄快递的人太慢了,后面排队的表达了强烈不满。当然,小刘也给出来解决方案,安排几个小茶几,排队领快递单,然后到小茶几那写,写完了送回,只安排一个人值班便可。这样的好处是,即便你排在队尾,通过自己熟练的填快递单技能也是可能被优先处理的。排队的时间缩短为领快递单时间,分钟级降到秒级啊。-- 故事结束 --这个故事的三个场景可以理解为:单进程(或单线程)处理方式、多进程(或多线程)处理方式、异步处理方式。在计算机的世界里,IO操作比CPU计算慢的多,而抓取恰恰是IO非常多的,异步则是一个很好的选择。另外,多进程多线程意味着更多的系统资源占用,当其依赖输入的时候,我们的系统离崩溃就不远了。到这儿,如果题主坚定了异步抓取的信心,可以使用下gevent体验下异步抓取,然后在实际项目里用上Scrapy就妥了。至于题主提到的,Python和多线程的关系,则又是另一个故事里...-- 开心一刻 --如果场景三每一个寄快递的人都特别慢,会导致一屋子小茶几或者一屋子人在等小茶几。所以我们得加个超时处理,防止有人占着茶几不寄快递。
■网友
为什么不用框架,推荐scrapy,简单好用,异步多线程,还支持分布式扩展,可以看一下!
■网友
IO密集型业务 瓶颈在于网络通信。CPU的运行周期远远快于网卡的请求响应, 所以看着是假的线程 CPU能在数百个线程间极速切换,效率会大大提高。
■网友
其实蛮不理解为什么说python多线程是个幌子的……希望题主能详细说下。
然后要多路IO处理请求,要么用框架,scrapy之类的,不用操心,人家都封装好了。
当然,可能你还是怀疑scrapy的多线程也是假的……
决定手撸一个真·多线程,可以考虑用协程,关键字:gevent \u0026amp; yield
【python爬虫怎样利用多线程】 实在不行,代码里面也可以实现多进程的,搜一下:multiprocessing
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
