PYTHON_异步爬虫(一)
高性能异步爬虫
目的:在爬虫中使用异步实现高性能的数据爬取操作
异步爬虫的方式:
-多线程,多进程(不建议):
好处:可以为相关阻塞的操作单独开启线程或者进程,阻塞操作旧可以异步执行。
弊端:无法无限制的开启多线程或者多进程。
-线程池、进程池(适当的使用):
好处:我们可以降低系统对进程或者线程创建和销毁频率,从而很好的降低系统的开销。
弊端:池中线程或进程的数量是有上限。
1、使用单线程串行方式执行
1 import time
2 #使用单线程串行方式执行
3
4 def get_page(str):
5 print("正在下载:",str)
6 time.sleep(2)
7 print("下载成功:",str)
8
9 name_list=['xiaozi','aa','bb','cc']
10
11 start_time=time.time()
12
13 for i in range(len(name_list)):
14 get_page(name_list[i])
15
16 end_time=time.time()
17
18 print('%d second'%(end_time-start_time))
执行结果如下:
2、使用线程池方式执行
1 import time
2 #导入线程池模块对应的类
3 from multiprocessing.dummy import Pool
4 #使用线程池方式执行
5 start_time=time.time()
6 def get_page(str):
7 print("正在下载:",str)
8 time.sleep(2)
9 print("下载成功:",str)
10
11 name_list=['xiaozi','aa','bb','cc']
12
13 #实例化一个线程池对象
14 pool=Pool(4)
15 #将列表中每一个列表元素传递给get_page进行处理
16 pool.map(get_page,name_list)
17
18 end_time=time.time()
19 print(end_time-start_time)
执行结果:
可以明显看出,使用线程池的方式大大提高执行效率
PYTHON_异步爬虫(一) 相关文章
Python:for循环 break,continue跳出
for循环是python的最基础循环 以下为for循环: for i in range(10): print('i=',i) 以上代码执行结果为: i= 0i= 1i= 2i= 3i= 4i= 5i= 6i= 7i= 8i= 9 range(10)默认每次循环1,如果想循环多次可以这样: for i in range(0,10,2): print('i=',i) 以上代码执行
[Flutter Async]-异步
事件循环Event Loop机制 Future就像是盒子里的巧克力糖 http.get("www.baidu.com").then((value) = null).catchError(onError);//http.get("www.baidu.com")Future刚建成没有完成的状态//then((value) = null)正常完成后得到一个值的状态//catchError(onErro
用原生的方式操作Excel,Python玩转Excel神器xlsxwriter详解!
大家好,在之前的Python办公自动化系列文章中,我们已经介绍了两个Python操作Excel的库openpyxl与xlwings,并且相信大家已经了解这两者之间的异同。 但是在Python中操作Excel库可不止这两个,本文就将介绍另一个强大的库xlsxwriter。来学习如何用原生的方式
Python复习02_分支循环02
接Python复习01_简要01 十、选择结构 (1)练习 age_ip=eval(input('please input your age:'))if age_ip = 18:print("chengnian")else:print('yes') (2)比较(关系)运算符 == 检查两个值是否相等 != = = (3)逻辑运算符 and 同真则真 or 有真则真 not 假则真,真
用Python制作汇率转换小程序
1.分析网页 下面我们来看看爬虫数据的代码,首先我们看看这个网址: https://www.huilv.cc/USD_CNY/ 我们来分析一下这个网页的数据页面: 2.爬取数据 import requestsfrom lxml import etreeheaders = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64
批量执行异步任务CompletionService
批量执行异步任务CompletionService 核心思想,就是将异步结果放入到阻塞队列中,然后再消费队列,实现异步任务批量执行 接口方法说明 FutureV submit(CallableV task);FutureV submit(Runnable task, V result);FutureV take() throws InterruptedException
Python的整除和取余
最近做题发现-123%10=7,于是查阅了一下python的取余机制,这里记录。 参考:https://blog.csdn.net/sun___M/article/details/83142126 //:向下取整 int():向0取整 正数的取余比较直接: print(123%10) #3 这里结果为3。 但是换为负数取余,情况就有所不同
《Fluent Python》CH.11_面向对象_接口:从协议到抽象基类
主要内容 首先,本章说明抽象基类的常见用途:实现接口时作为超类使用 说明抽象基类如何检查具体子类是否符合接口定义,以及如何使 用注册机制声明一个类实现了某个接口,而不进行子类化操作 最后, 说明如何让抽象基类自动“识别”任何符合接口的类——不进
探究Python源码,终于弄懂了字符串驻留技术
摘要: 在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能。 每种编程语言为了表现出色,并且实现卓越的性能,都需要有大量编译器级与解释器级的优化。 由于字符串是任
python confusion matrix 混淆矩阵
【1】混淆矩阵(Confusion Matrix)概念 【2】混淆矩阵-百度百科 【3】Python中生成并绘制混淆矩阵(confusion matrix) 【4】使用python绘制混淆矩阵(confusion_matrix) 示例: 程序摘自【4】。 from sklearn.metrics import confusion_matriximport matp