什么是Python异步爬虫多线程与线程池
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要讲解了"什么是Python异步爬虫多线程与线程池",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是Python异步爬虫多线程与线程池"吧
千家信息网最后更新 2025年01月17日什么是Python异步爬虫多线程与线程池
这篇文章主要讲解了"什么是Python异步爬虫多线程与线程池",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是Python异步爬虫多线程与线程池"吧!
目录
背景
异步爬虫方式
多线程,多进程(不建议)
线程池,进程池(适当使用)
单线程+异步协程(推荐)
多线程
线程池
背景
当对多个url发送请求时,只有请求完第一个url才会接着请求第二个url(requests是一个阻塞的操作),存在等待的时间,这样效率是很低的。那我们能不能在发送请求等待的时候,为其单独开启进程或者线程,继续请求下一个url,执行并行请求
异步爬虫方式
多线程,多进程(不建议)
好处:可以为相关阻塞的操作单独开启线程或者进程,阻塞操作就可以异步会执行
弊端:不能无限制开启多线程或者多进程(需要频繁的创建或者销毁进程,线程)
线程池,进程池(适当使用)
好处:可以降低系统对进程或线程创建和销毁的频率,从而很好的而降低系统的开销
弊端:线程或进程池中的数量是有上限的
单线程+异步协程(推荐)
多线程
正常运行如下的代码,需要花费8秒钟的时间,因为sleep是一个阻塞的操作,在等待的时候不会执行别的操作,极大地降低了效率
from time import sleepimport timestart = time.time()def xx(str): print('正在下载:', str) sleep(2)str = ['xiaozi', 'aa', 'bb', 'cc']for i in str: xx(i)end = time.time()print('程序运行时间:',end-start)
使用多线程后
from threading import Threadfrom time import sleepimport timestart = time.time()def xx(str): print('正在下载:',str) sleep(2)str = ['xiaozi','aa','bb','cc']def main(): for s in str: #开启线程,target=函数名,args=(xx,) ,xx为向函数传递的参数,必须为元组类型,所以后面需要加, t = Thread(target=xx,args=(s,)) t.start()if __name__ == '__main__': main() end = time.time() print('程序运行时间:',end-start)
但是我们发现下面的运行顺序貌似有点乱的
线程池
对上面的改为线程池后运行
#倒入线程池模块对应的类from multiprocessing.dummy import Poolfrom time import sleepimport timestart = time.time()def xx(str): print('正在下载:',str) sleep(2)str = ['xiaozi','aa','bb','cc']#实例化一个线程池对象,线程池中开辟四个线程对象,并行4个线程处理四个阻塞操作pool = Pool(4)#将列表中的每一个列表元素(可迭代对象)传递给xx函数(发生阻塞的操作)进行处理#map方法会有一个返回值为函数的返回值(一个列表),但是这里没有返回值所以不考虑#调用map方法pool.map(xx,str)end = time.time()print('程序运行时间:',end-start)
感谢各位的阅读,以上就是"什么是Python异步爬虫多线程与线程池"的内容了,经过本文的学习后,相信大家对什么是Python异步爬虫多线程与线程池这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
线程
进程
爬虫
运行
阻塞
时间
函数
对象
正在
程序
学习
适当
内容
好处
建议
弊端
效率
方式
方法
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全监管立场文件
如何让数据库置疑
计算机毕设题目软件开发
广州帝特网络技术有限公司官网
毕业设计做数据库简单吗
数据库文件选项卡中添加数据文件
app数据库实例代码下载
在家怎么用湖北理工学院的数据库
应用网络安全法的案例
java 服务器架构设计
三级网络技术工作台
vps服务器免费
网络安全设备未配置使用
辽宁移动dns服务器地址云空间
网络数据库开发平台
全面深入mysql数据库优化
网络安全条件
5e服务器能连跳吗
网络安全与信息安全自查报告
计算机网络技术网页设计方向
erp数据库招聘
数据库约束表达式
雁塔分局网络安全保卫大队
新华三软件开发岗位如何
常州PDA软件服务器连通性异常
第3章 电子商务网络技术
审计局网络安全总结
计算机网络技术命令配置题
打开数据库怎么设置日期
数据库收银系统图片