1.1 异步爬虫概述:
未使用异步时单线程爬取结果信息[会阻塞]:
使用异步爬虫的方式:
(1). 多线程**[不建议]**:可以未相关阻塞操作单独开启线程或者进程,阻塞操作就可以异步执行。
弊端:无法无限制的开启多线程或者多进程
(2). 线程池、进程池**[少使用]**:
好处:可以降低系统对进程或者线程创建和销毁的一个频率,从而很好的降低系统开销。
弊端:池中线程或进程的数量是有上限的。
1.2 线程池方式的使用:
# 测试线程池方式 import time # 导入线程池模块的类 from multiprocessing.dummy import Pool if __name__ == '__main__': # 1.记录开始时间 start_time=time.time() # 2.构造操作函数 def get_page(str): print("正在下载...",str) time.sleep(2) print("下载完成...",str) # 3.实例化测试数据 name_list=["xiaozhi","bige","xiaomo "] # 4.实例化线程池对象 pool=Pool(4) # 将每一个list数据传递给函数执行 pool.map(get_page,name_list) end_time=time.time() print(end_time-start_time)