龙空技术网

python协程入门级模块genvent,小白轻松提高爬虫效率

淘气的python 861

前言:

目前你们对“python协程爬虫”大概比较看重,小伙伴们都需要剖析一些“python协程爬虫”的相关资讯。那么小编也在网摘上网罗了一些关于“python协程爬虫””的相关文章,希望看官们能喜欢,朋友们一起来了解一下吧!

之前小编已经通过python中yield关键字,简单的介绍了协程的一些基本理念。但是作为新手,如何将协程应用到自己的代码中,提高效率呢?今天给大家讲的genvent就可以简单实现协程的功能。

打算给大家举个例子,一个关于爬虫的

先说一下爬虫吧。我们都知道当我们向服务器发送一个get请求后,服务器会返回给我们相应的内容。可是,返回内容的时候是需要时间的。如果我们发送一个请求后,需要0.5秒后才能收到请求,那么在这0.5秒内,我们什么都做不了,只能在那里等着。一个请求0.5秒,那一千个一万个要多长时间呢?

显然,如果使用这种方式,我们爬虫的效率明显会很低。现在我们换一种思路,我们先向服务器发送一千个请求,不管服务器有没有返回值,能请求发送完成后,在拿服务器返回给我们的数据。

genvent模块会检测我们的函数,一旦我们的函数遇到IO操作,就会自动切换执行下一个函数。这种切换是全自动的,不需要我们来操心。

现在我们使用这个函数依次请求多个网站,分别计算同步和异步所用的时间。

这是我写的一个简单的同步和异步的比较。其中的gevent.joinall的作用是等待函数完成,新手不用了解的太深入,接收一个列表作为参数。使用gevent.spawn来接受函数和函数的参数。先看一下运行结果吧。

看到了同步和异步的差距了吧!现在来介绍一下导入的模块

新手都会有这个疑问,这个monkey是干什么的呀!使用monkey的作用是,在不改变函数源代码的情况下,将堵塞式函数编程协程式。

私信回复001获取源码

私信回复book获取python系列书籍

标签: #python协程爬虫