| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python asyncio异步学习笔记 -> 正文阅读 |
|
[Python知识库]Python asyncio异步学习笔记 |
协程?协程不是计算机提供的机制,是程序员人为定义的。 协程被称为微线程,是一种用户态的上下文切换的技术。 简而言之就是通过一个线程实现代码块相互切换运行。 协程的意义线程执行任务时 遇到IO耗时操作 不会再等待 而是去执行其他工作 二 实现协程的方法1 greenlet实现协程
?2 yield方法
3 asyncio.coroutine方法 因为用的3.9版本 所以不支持 我就不写了4async&awit关键字方法(推荐)python3.5版本后才可以使用
按顺序执行 遇到耗时操作时执行其他任务
三 异步编程事件循环理解成一个死循环,去检测并执行某些代码
协程函数函数名前面有async 关键字的函数 协程对象 执行协程函数得到的对象
协程对象的内部代码不会执行 如果要执行 需要交给事件循环来处理
awaitawait+可等待对象(协程对象,Future,Task对象-》IO等待)
await 就是等待对象的值得到结果之后再继续向下走 Task对象在事件循环中添加多个任务的。 示例1
?示例2
asyncio.Future对象(了解)task对象基于future future如果不被赋值 将一直执行不会终止 但task一般绑定一个函数,函数执行完自动赋值 也自动终止。 ?Concurrent.future.Future对象使用线程池 进程池实现异步时使用的对象 如果做异步编程时 遇到了某个第三方模块不支持协程时 使用下面这种方式 ? ?异步和非异步结合案例 asyncio异步迭代器
asyncio 异步上下文管理器?uvloop是asyncio循环的替代方案,事件循环>默认的asyncio的事件循环 效率提升至少一倍 ?django3和fastapi内部就是使用的uvloop 所以快 支持 异步 实战案例异步操作redis在使用代码操作redis时,链接、操作、断开都是网络IO 同时使用两台服务器的redis 在连接第一台服务器的时候去做连接第二台服务器的任务, 异步操作mysql?pip install aiomysql FASTAPI框架示例? ?爬虫示例: |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 4:46:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |