当前位置: 首页 > 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 = asynico.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


http://www.mrgr.cn/news/40125.html

相关文章:

  • HTML+CSS基础 第二季课堂笔记
  • 【d56】【sql】完成sql 7题目
  • 读代码UNET
  • CSV数据行(取值)的列数多于表头字段数-Pandas无法正常读取
  • 鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
  • 如何给一张图像判断失真类型?
  • 【Kubernetes】常见面试题汇总(四十七)
  • (c++)内存四区:1.代码区2.全局区(静态区)3.栈区4.堆区
  • 使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南
  • BSS是什么
  • FastAPI: websocket的用法及举例
  • 基于ESP8266—AT指令连接阿里云+MQTT透传数据(3)
  • JavaSE总结
  • cas5.3统一登录前后端分离改造方案(源码)
  • MKV转MP4丨FFmpeg的简单命令使用——视频格式转换
  • 为什么要配置环境变量?
  • 004集—— txt格式坐标写入cad(CAD—C#二次开发入门)
  • spring模块都有哪些
  • 基于单片机的家用安防报警系统设计
  • Threejs中使用A*算法寻路导航