python爬虫–协程
基本知识
- event_loop:事件循环,相当于一个无限循环,我们可以把一些函数注册到这个事件循环上,当满足某些条件的时候,函数就会被循环执行。
- coroutine:携程对象,我们可以将携程对象注册到事件循环中,它会被时间循环调用。我们可以使用
async
关键字来定义一个方法,这个方法在调用时不会被立即执行,而是返回一个协程对象。
- task:任务,它是对协程对象的进一步封装, 包含了任务的各个状态。
- future:代表将来执行或还没有执行的任务,实际上和task 没有本质区别。
- async定义-个协程.
- await用来挂起阻塞方法的执行。
协程的基本使用
import asyncio
async def request(url):
print('正在请求的url是:',url)
print('请求成功:',url)
c = request('www.baidu.com')
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(c)
print(task)
loop.run_until_complete(task)
print(task)
多任务协程实现
import asyncio
import time
async def request