什么是Python异步爬虫多线程与线程池
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要讲解了"什么是Python异步爬虫多线程与线程池",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是Python异步爬虫多线程与线程池"吧
千家信息网最后更新 2025年02月21日什么是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安全错误
数据库的锁怎样保障安全
网络技术与运维前景
领一个月服务器
杭州软件开发工程师薪资
晟同天津网络技术有限公司
网络安全教育主要内容100字
中国工业软件开发的上市公司
个人云与服务器的区别
cbm数据库的使用场景
路由器内置认证服务器
手机 ftp服务器
数据库怎么生成树形
网络安全舆情会议记录
网络安全什么时候发布的
如何拆分数据库
垃圾邮件过滤服务器
网络技术书籍发布
服务器安全管理要求
武汉国家网络安全基地用地
谈到网络安全
嵊州租房软件开发
服务器为什么不需要高端显卡
raid 服务器启动
ec2搭建vpn服务器
学校开展宣传网络安全
软件开发一般在哪里找工作
后台服务器协议设计
数据库utf8不能输入中文
软件开发英文重要吗
湖北良好软件开发服务保障
联想7x06服务器取硬盘