爬虫中使用的最多的就是协程了,协程的使用确实比较难理解,但是总归就在写代码,通过代码自己实践比几千字的解释更有用
asyncio.sleep(delay, result=None, *, loop=None)sleep()总是挂起当前任务,允许运行其他任务。自3.8版起已弃用,将在3.10版中删除:循环参数。
通过协程的方式请求百度:import aiohttp
import asyncio
import ssl
async def fetch(session,url):
async with session.get(url,ssl=ssl.SSLContext()) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
html=await fetch(session,'https://baidu.com')
print(html)
loop=asyncio.get_event_loop()#定义事件循环
loop.run_until_complete(main())#直到main()函数执行完毕,事件循环结束
通过过gather方法
import asyncio
async def a(t):
print('-->',t)
await asyncio.sleep(0.5)
print('<--',t)
return t*10
def main():
futs=[a(t) for t in range(4)]
print(futs)
ret=asyncio.gather(*futs) #参数前必须加*
print(ret)
loop=asyncio.get_event_loop()
ret1=loop.run_until_complete(ret)
print(ret1)
main()
通过create_task()方法
使用高级asyncio.create_task()函数创建任务,或使用低级loop.create_task()函数或确保_future()函数。不鼓励手动实例化任务。
#通过create_task()方法
import asyncio
async def a(t):
print('-->',t)
await asyncio.sleep(0.5)
print('<--',t)
return t*10
async def b():
cou=0
while 1: #死循环
cou+=1
cor=a(cou) #cou传入函数a中
resp=loop.create_task(cor)#创建任务
await asyncio.sleep(0.5)
#print(resp)
loop=asyncio.get_event_loop()#定义事件循环
loop.run_until_complete(b())#直到函数b执行完毕,事件循环结束
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!