多线程爬虫怎样停止
你每次抓取完不都是有状态的,404,301,200之类的,来判断你是否这一地址是否采集完成
你要广度还是深度,都是有层级的,这就让你总的链接是可控的
你应该得有队列池的概念,重试的概念
另外,这问题描述得真不清楚,建议你看一下搜索引擎原理吧
■网友
没太看懂。按照我的理解,当一个线程结束解析以后,检查队列是空的同时又没有其它正在解析中的线程,不是就可以判断结束爬取了吗?如果还有其它解析中的线程,而队列是空的,就暂时挂起该线程,等待其它线程的解析结果。
■网友
按照你的设计思路,看起来是每个worker线程都会从队列里面读和写。因此没办法在队列为空时,自行退出该线程(因为可能后面其它线程会往队列里面写,该worker还得继续干活)。
有个中规中矩的思路是,全局共享一个stop_flag,再启一个监控线程,当监控线程判断任务真的结束了,由监控线程去置这个stop_flag为True。worker线程轮询时,判断这个stop_flag,如果为True,主动退出。
剩下的策略就是,监控线程怎么判断该停止了?方案有很多种,比如:
收集worker线程的idle状态(每次轮询都是空转,没有从队列里面取出任务), 如果每个worker线程的都处于idle状态,则大令一挥,退堂!!!自己去读取队列状态,如果在一定时间里面读到的队列状态都为空,那么可以结束了。 推荐方案一,方案二不是很严谨,因为worker线程可能会卡住,而不去写queue,看业务场景了。
【多线程爬虫怎样停止】
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
