首页 > 其他分享 >认识asyncio

认识asyncio

时间:2022-11-14 22:45:56浏览次数:37  
标签:__ get 认识 time print loop asyncio

单事件循环

# 事件循环 + 回调(驱动生成器)+ epoll(IO多路复用)
# asyncio 是python用于解决异步io编程的一整套解决方案

import time
import asyncio


async def get_html(url):
    print("start get url")
    await asyncio.sleep(2)     # 在协程函数里面不能使用普通的time.sleep()
    print("end get url")



if __name__ == '__main__':
    start_time = time.time()
    # 创建一个事件循环器
    loop = asyncio.get_event_loop()
    # 使用以下方法 传入要执行的协程函数
    loop.run_until_complete(get_html("http://www.baidu.com"))
    print(time.time()-start_time)

 

多次并发

import time
import asyncio


async def get_html(url):
    print("start get url")
    await asyncio.sleep(2)     # 在协程函数里面不能使用普通的time.sleep()
    print("end get url")



if __name__ == '__main__':
    start_time = time.time()
    # 创建一个事件循环器
    loop = asyncio.get_event_loop()
    # 创建多组任务,并发多次
    tasks = [get_html("http://www.baidu.com") for i in range(10)]
    loop.run_until_complete(asyncio.wait(tasks))
    print(time.time()-start_time)

 

获取结果

import time
import asyncio


async def get_html(url):
    print("start get url")
    await asyncio.sleep(2)     # 在协程函数里面不能使用普通的time.sleep()
    print("end get url")
    return "aaa"



if __name__ == '__main__':
    start_time = time.time()
    # 创建一个事件循环器
    loop = asyncio.get_event_loop()

    # 获取结果 示例一
    # get_future=asyncio.ensure_future(get_html("http://www.baidu.com"))
    # loop.run_until_complete(get_future)
    # print(get_future.result())

    # 获取结果 示例二
    task = loop.create_task(get_html("http://www.baidu.com"))
    loop.run_until_complete(task)
    print(task.result())


    print(time.time()-start_time)

 

标签:__,get,认识,time,print,loop,asyncio
From: https://www.cnblogs.com/niunai/p/16890766.html

相关文章

  • 重新认识Spring Boot
    SpringBoot的特性方便的创建可独立运行的Spring应用程序直接内嵌Tomcat、Jetty或Undertow简化了项目的构建配置为Spring及第三方库提供自动配置提供生产级特性无需生成代......
  • Linux学习笔记(12)——认识系统服务(daemon)
    认识系统服务(daemon)认识系统服务(daemon)一、什么是daemon与服务(service)1.1systemd使用的unit分类二、通过systemctl管理服务2.1通过systemctl管理单一服务(serv......
  • 你还在为不认识单词而烦恼吗,不如自己动手作一个简单的单词翻译程序
    你还在为不认识单词而烦恼吗,不如自己动手作一个简单的单词翻译程序我们来模拟有道词典的翻译,翻译自己不认识的单词,解决单词不认识的烦恼我们要准备的环境,window10下的PyChar......
  • SpringBoot(一):初步认识SpringBoot
    一、SpringBoot是什么 在了解SpringBoot之前,我们需要先来回顾一下Spring。Spring是一个轻量级的WEB应用开发的框架,它的初衷是为了简化企业级应用开发的复杂性,说白了就是......
  • 0:Linux的初步认识-步入Linux的现代方法
    目录​​0.0系统的认识​​​​0.1Linux操作系统认识,以及开源的提出:Linux的千奇百怪的版本​​​​0.2开源的含义​​​​0.3Linux的用途,各类发行版本​​0.0系统的认......
  • ✍74 asyncio随笔
    一.asyncio.wait和asyncio.gather的异同https://www.jianshu.com/p/6872bf356af71.异同点综述2.asyncio.wait用法最常见的写法是:awaitasyncio.wait(task_li......
  • asyncio
    IO密集型应用IO密集型应用CPU等待IO时间远大于CPU自身运行时间,太浪费;常见的IO密集型业务包括:浏览器交互、磁盘请求、网络爬虫、数据库请求等  Python世界......
  • 20220926 18. 认识与分析登录文件
    18.1什么是登录文件登录文件可以记录系统在什么时间、哪个主机、哪个服务、出现了什么讯息等信息,这些信息也包括使用者识别数据、系统故障排除须知等信息。如果你能够......
  • 20220923 17. 认识系统服务 (daemons)
    17.1什么是daemon与服务(service)常驻在记体体中的程序,且可以提供一些系统或网络功能,那就是服务系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个......
  • Linux学习笔记(7)——认识与学习Bash
    认识与学习Bash认识与学习Bash一、认识Bash这个Shell1.1Shell1.2Bashshell的功能1.3查询命令是否为Bashshell的内置命令:type1.4命令执行与快速编辑按钮......