首页 > Web开发 > 详细

爬虫----异步---高性能爬虫----aiohttp 和asycio 的使用

时间:2019-05-25 17:40:06      阅读:238      评论:0      收藏:0      [点我收藏+]

前情提要:

  首先膜拜loco大佬

    肯定有人像我一样.不会异步,发一下.

 

一:性能比对

    多进程,多线程,(这里不建议使用,太消耗性能)

    进程池和线程池 (可以适当的使用)

    单线程+异步协程   (推荐使用)

二:案例演示

    1->1: 普通的啥也不用的

  技术分享图片

    1->2:

               技术分享图片

 

      2->1:

      使用线程池

      技术分享图片

      2->2:结果

    技术分享图片

三:异步协程

    1: 协程的参数设定

技术分享图片

 

       2:协程的简单使用

技术分享图片

技术分享图片

 

       3:task的使用

技术分享图片

 技术分享图片

4:future 的使用

技术分享图片

技术分享图片

5:

回调函数的使用

技术分享图片

技术分享图片

四:支持异步请求网络的模块: aiohttp

 

import aiohttp
import asyncio

async def get_page(url):             
    async with aiohttp.ClientSession() as session:      #with 前面都要加async
        async with await session.get(url=url) as response:  # 有io阻塞的都要加await 
挂起 page_text = await response.text() #read() json() print(page_text) start = time.time() urls = [ ‘http://127.0.0.1:5000/bobo‘, ‘http://127.0.0.1:5000/jay‘, ‘http://127.0.0.1:5000/tom‘, ‘http://127.0.0.1:5000/bobo‘, ‘http://127.0.0.1:5000/jay‘, ‘http://127.0.0.1:5000/tom‘, ‘http://127.0.0.1:5000/bobo‘, ‘http://127.0.0.1:5000/jay‘, ‘http://127.0.0.1:5000/tom‘ ] tasks = [] loop = asyncio.get_event_loop() for url in urls: c = get_page(url) task = asyncio.ensure_future(c) tasks.append(task) loop.run_until_complete(asyncio.wait(tasks)) print(‘总耗时:‘,time.time()-start)

 

爬虫----异步---高性能爬虫----aiohttp 和asycio 的使用

原文:https://www.cnblogs.com/baili-luoyun/p/10923183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!