python 异步爬虫_PYTHON_异步爬虫(一)

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

你可能感兴趣的:(python,异步爬虫)