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

Python asyncio

一些Pre关键概念

asyncio 本质上还是单进程单线程的Python程序;
建立event_loop 概念,上面event_loop 可以理解为大脑,下面是若干个可执行的Task;
Task 没有控制权,没有办法控制event_loop 执行某个Task,只能说明目前在等待哪个Task执行完毕或已准备好执行,由event_loop 控制由哪个Task执行;
Event_loop 一旦开始运行Task,必须由Task显式地交出控制权,把控制权交还给EventLoop,具体做法有:await 和 函数执行完毕;
区分Coroutine 和 Task,Coroutine 只有变成 Task 才能够运行;
拿到Coroutine的返回值需要await = xx 操作
尽管协程是并发的,但同一时刻仅一个程序再跑,优势在于等待时间会被充分利用;

Coroutine 与 Task

Coroutine 有分为 Coroutine Function 和 Coroutine Obj 。 Coroutine Function 是由 asyncio定义,调用Coroutine Function得到的返回值是Coroutine Obj,

import asyncio

async def main():
	print('hello')
	await asyncio.sleep(1)
	print('world')

coro = main()

其中main函数(Coroutine Function)并不会运行,仅返回一个coroutine obj
那如何使得这个程序运行?

  1. 从 synchronize 模式 切换到 asynchronize 模式, 切换到Event_loop控制任务执行
  2. 把coroutine obj 转换为 Task

使用 asyncio.run 实现

await

相关文章:

  • C++ | 多态
  • 要查看 ​​指定 Pod 的资源限制(CPU/内存)
  • 图书管理系统(Python)
  • 蓝桥杯单片机刷题——按键控制距离显示精度
  • Android studio | From Zero To One ——手机弹幕
  • 算法 模版
  • 408 计算机网络 知识点记忆(8)
  • 数据可视化 —— 堆形图应用(大全)
  • 在windows服务器使用Nginx反向代理云端的python实现的web应用
  • 极简cnn-based手写数字识别程序
  • 生成验证码图片
  • shell编程之条件语句
  • 从原始新闻数据中筛选出 正文内容超过 1024 个词(token) 的新闻,并将其保存到新文件中。
  • Linux __命令和权限
  • 两个树莓派如何通过wifi direct传输视频并显示
  • 二分查找4:35. 搜索插入位置
  • AI 笔记 - 开源轻量级人脸检测项目
  • 内联函数通常定义在头文件中的原因详解
  • STL之无序关联式容器针对于自定义类型的操作
  • 使用克魔助手查看iOS 应用程序使用历史记录和耗能历史记录
  • 成都2023疫情最新情况如何/阜平网站seo
  • 太原住房与城乡建设厅网站/外链seo推广
  • 门户网站建设工作领导小组/2024年将爆发新瘟疫
  • dtu网站开发/搜索引擎优化方案
  • 做网站的财务需求/seo推广系统排名榜
  • 网站建设及推广服务的合同范本/老客外链