当前位置: 首页 > news >正文

Python的异步编程

什么是协程?

协程不是计算机系统提供,程序员人为创造。

协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。

实现协程有那么几种方法:

greenlet,早期模块

yield关键字

asyncio装饰器(python3.4之后)

async,await关键字(python3.5之后)

协程的意义

在一个线程中如果遇到IO等待时间,线程不会傻等,利用空闲的时候再去干点其他事。

下面是不包含协程的代码示例,也被称为同步,因为发送了下载请求马上返回图片(结果)。

加上协程之后的一个通信形式,是再发送一个请求的时候同步发出另一个请求。这样比较快。

而且也被称为异步,因为发送了下载请求没有马上返回图片(结果)。

异步编程

事件循环

快速上手

协程函数,定义函数的时候async def 函数

协程对象,执行协程函数()得到的协程对象

async def func():pass
result = func()

注意:执行协程函数创建协程对象,函数内部代码不会执行

如果想要运行协程函数内部代码,必须要将协程对象交给事件循环来处理。

import asyncioasync def func():print("叭叭叭")result = func()# python3.7之前的版本写法
loop = asyncio.get_event_loop()
loop.run_until_complete(result)# python3.7之后的版本写法
asyncio.run(result)

await

await+可等待的对象(协程对象、future、task对象 -> IO等待)

import asyncioasync def func():print("来玩呀")response = await.asyncio.sleep(2)print("结束",response)
asyncio.run(func())

task

future

http://www.lryc.cn/news/450743.html

相关文章:

  • 初识Linux · 进程等待
  • 面向对象建模
  • MetaJUI v0.4 遇到的一些问题及解决办法记录
  • 从零开始学习OMNeT++系列第二弹——新建一个OMNeT++的工程
  • 【Android】布局优化—include,merge,ViewStub的使用方法
  • 传奇外网架设教程带图文解说—Gee引擎
  • MySQL | excel数据输出insert语句
  • 足球青训俱乐部管理:Spring Boot技术驱动
  • 一次实践:给自己的手机摄像头进行相机标定
  • 【docker学习】Linux系统离线方式安装docker环境方法
  • vscode开发uniapp安装插件指南
  • Elasticsearch7.7.1集群不能相互发现的问题解决以及Elasticsearch7.7.1安装analysis-ik中文分词插件的应用
  • 蓝牙Mesh介绍
  • Qt 窗口中鼠标点击事件的坐标探讨
  • 服务器虚拟化的全面指南
  • Linux启动mysql报错
  • 基于大数据的二手房价数据可视化系统
  • C++模拟实现vector容器【万字模拟✨】
  • 论文笔记:LAFF 文本到视频检索的新基准
  • iSTFT 完美重构的条件详解
  • SSH(安全外壳协议)可以基于多种加密算法
  • Navicat 工具 下载安装
  • 家用高清投影仪怎么选?目前口碑最好的投影仪推荐
  • 阿里云盾同步漏洞之限制请求数
  • docker安装kafka-manager
  • Android Studio 新版本 Logcat 的使用详解
  • 基于php摄影门户网站
  • uniapp中uni.request的统一封装 (ts版)
  • 记录一次gRpc流式操作(jedis版)
  • 20241001国庆学习