python爬虫之异步爬虫之线程池的基本使用

python爬虫之异步爬虫之线程池的基本使用

高性能异步爬虫

目的:在爬虫中使用异步实现高性能的数据爬取操作。

异步爬虫的方式:

1、多线程,多进程(不建议):

好处:可以为相关阻塞的操作单独开启线程或者进程,阻塞操作就可以异步执行。

弊端:无法无限制的开启多线程或者多进程。

2、线程池、进程池(适当的使用):

好处:我们可以降低系统对进程或者线程创建和销毁的一个频率,从而很好的降低系统的开销。

弊端:池中进程或线程的数量是有上限的。

使用单线程串行方式执行代码和运行结果如下:

复制代码
import time
#使用单线程串行方式执行

def get_page(str):
    print("正在下载:",str)
    time.sleep(2)
    print("下载成功:",str)

name_list = ['xiaozi','aa','bb','cc']

start_time = time.time()

for i in range(len(name_list)):
    get_page(name_list[i])

end_time = time.time()
print('%d second'%(end_time-start_time))

导入线程池模块执行代码和运行结果如下:

复制代码
import time
#导入线程池模块对应的类
from multiprocessing.dummy import Pool
#使用线程池方式执行
start_time = time.time()

def get_page(str):
    print("正在下载:",str)
    time.sleep(2)
    print("下载成功:",str)

name_list = ['xiaozi','aa','bb','cc']

#实例化一个线程池对象
pool = Pool(4)
#将列表中每一个列表元素传递给get_page进行处理
pool.map(get_page,name_list)

end_time = time.time()
print(end_time-start_time)
相关推荐
RSTJ_162514 分钟前
PYTHON+AI LLM DAY SIXTY-FOUR
开发语言·python
甄心爱学习34 分钟前
【项目实训(个人11)】
python·个人开发
覆东流40 分钟前
Java开发环境搭建
java·开发语言·后端
阿洛学长43 分钟前
VMware安装虚拟机教程(超详细)
java·linux·开发语言
zhangfeng113343 分钟前
国家超算中心 htc 如果只有gpu资源 没有cpu资源 操作文件的时候会不会很卡呢
人工智能·pytorch·python·机器学习
rit843249943 分钟前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab
jiayong2344 分钟前
01 检查 Python 版本与环境
开发语言·python
阿哟阿哟1 小时前
vna.3.1.9.cn.jar设置成中文界面
python·pycharm·jar
XZ-0700011 小时前
MySQL-综合应用(Python+Html)
python·mysql·html
就叫_这个吧1 小时前
Java普通类、抽象类、接口的应用和区别
java·开发语言