当前位置:   article > 正文

python 协程可以嵌套协程吗_突破python爬取极限,超牛逼的异步协程爬虫

python event loop嵌套

异步协程

1. event_loop

2. coroutine

中文翻译叫协程,在 Python 中昌指代为协程对象类型,可以将协程对象注册到时间循环中被调用。使用 async 关键字来定义的方法在调用时不会立即执行,而是返回一个协程对象。

8d690308916a978a7f1a146826b8beb3.png

56ccd5ab1a85a622fd9eee8aee110208.png

2edb13517a140fe36bbf8a7c94c4de97.png

0be93f669e0edf44c5154cf76b2b5da2.png

3684efaa4f48d0e1be5612b358254c9b.png

3bf7d6cc30499d4e2466e23038c79bc1.png

74f03259e35e13ae24407cb67f1164fd.png

总耗时大概是2.65秒,你是不是觉得这就很快了?其实还有更快的代码:

19ef7b2c18fa21c9170c569220a86ca7.png

635e5d5c25b3b3b7591addff5c5c6e0a.png

大约0.98秒就可以爬完所有的网页。

这是因为第一种方法并不是真正的异步请求,在异步协程中如果出现同步模块相关的代码则无法实现异步,比如requests.get()属于同步模块的代码。

要想实现真正的异步协程爬虫必须使用基于异步的网络请求模块,所以要使用 aiohttp 模块,这个模块需要安装:

eb74b5b2d11b16b2abdcb3432acf5d3a.png

它的使用与 requests 模块类似,需要注意的是,aiohttp 获取响应数据操作之前一定要使用 await 进行挂起。

在执行协程的时候,如果遇到了 await,那么就会将当前协程挂起,转而执行其它的协程,直到其它协程也挂起或执行完毕,再进行下一个协程的执行。

想学python的小伙伴可以vx关注我:芝麻代理

学习视频免费分享

74550739a41c790519463110aa6c51eb.png

回复资料分享即可领取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/102556?site
推荐阅读
相关标签
  

闽ICP备14008679号