本文主要讨论以下问题:

  • 什么是异步的(异步)编程?
  • 为什么要使用异步编程?
  • 什么方法在Python异步编程?
  • Python 3中中。5如何使用异步网络爬虫?

所谓异步相对的同步(同步)这个概念是,原因是容易造成混乱,因为在刚开始使用这两个概念容易同步视为一个同时,和同时这是否意味着并行(平行)它?然而,在实践中同步或异步被引导到时间线概念,同步装置订单,统一时间表,虽然异步装置无序,效率优先时间表。例如,在爬行运行时,爬行的第一页,然后将网页B提取物的下一层链接,此时运行检索器只能被同步,页面B只能等待,直到过程完成一页可以抓取; 然而,对于网络中的两个独立的页A1和A2,A1在时间处理请求,而不是让CPU处于空闲状态,后面A2等等,A2是更好的待遇,谁应该等到第一个网络为完成处理请求会,从而能更充分地利用了CPU,但执行顺序的A1和A2是不确定的,这是异步。

很显然,在某些情况下使用异步编程可提高加工效率,减少不必要的等待时间,并能够做到这一点,因为计算机的CPU和其他设备独立运行,当CPU运行时远远超过阅读和更高效写(I / O)设备的其它效率。为了利用异步编程的优点,人们想出了很多方法来重新排列,运行顺序表(附表)计划,以最大限度地提高CPU的使用情况,包括进程,线程,协程等。(具体是指“”)。在Python 3.5的发电机(发电机)到协程通过作为装饰,在Python 3之前。图5是由关键字定义的协程,但也将包括在内,作为异步编程基于协程一个标准库。

要使用需要了解以下概念:

  • 事件循环
  • 协同程序
  • 未来和任务

事件循环

学习JavaScript或节点。JS一定不陌生事件循环,我们可以看到它作为一个调度机制的循环(循环),它可以安排优先需要执行的CPU执行的操作,但将被阻止我排队等着进入/ O行为:

谈到事件循环:

当然,你也可以选择实施其他形式,如使用框架,但它也非常易于使用(为我是否更好的性能还没有证实,但至少与他们Jupyter笔记本更方便):

协同程序

Python 3.5之后,以限定推荐关键词协程,它具有以下特点:

  • 通过阻断行为可能暂停,恢复执行直到结果后,事件循环相应地安排来执行多个协同程序;
  • 协同程序是不是像一般的功能,并且不会被调用执行它,而只是把它在事件循环被安排执行。

一个简单的例子:

既然我们无法知道协程调用和随时返回,只要对象跟踪执行结果。

未来和任务

等效保全未来可以返回结果。而且是一个子类,所不同的是,它包括协程将被执行(从而构成调度的任务)。此外,在上述程序为例,如果你想知道结果,该方法可以被包裹成一个协同程序,最后,读取结果:

异步请求网络

Python的处理网络请求,最好使用一个库(一个不应该),但由于其同步请求的过程中被阻断,因此不得不选择 。为了比较同步异步情况下,由假服务器的第一异步处理之间的区别:

处理服务器处理该请求的参数()是正比于同步模式请求的长度,其结果如下:

异步请求,结果如下:

但从运行时间点效果明显。

### 未完待续

下一个软件包将变得更简单,更利于伪装成普通用户访问浏览器,因此该服务将请求发送到网络爬虫。

参考

- 结束 -

我支持奖励写出更多好文章,谢谢!


本文链接:Python 异步网络爬虫(1)

您可能也会喜欢

友情链接:

经文 大悲咒注音 心经唱诵