首页 > 编程语言 >Python3 协程 await async 相关的用法和笔记

Python3 协程 await async 相关的用法和笔记

时间:2023-11-15 16:34:12浏览次数:44  
标签:task 协程 await func async asyncio


想要提供可以进行协程切换的awaitable,可以使用下面的方法:

1   任务task
async def func():
    print("yes Wait")

task = asyncio.create_task(func())
await task
2   协程对象,可以使async def 定义的协程函数(是否能触发切换不一定,要看函数内容)
    函数内可以利用asyncio.sleep(0) # https://docs.python.org/zh-cn/3/library/asyncio-task.html#sleeping
    该函数可以实现协程切换
3   asyncio.sleep(0).__await__()
    只好借用已经实现的__await__()


并发执行协程
可以如下:
loop = asyncio.get_event_loop()
tasks = [greenlet_func(x) for x in ["name", "key"]]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
也可以:
async def func():
    await asyncio.sleep(0)
    return "yes"

async def main(x):
    print(x)
    print(await func())
    
async def run():
    await asyncio.gather(main("VV"), main("NN"), main("MM"))

asyncio.run(run())

标签:task,协程,await,func,async,asyncio
From: https://www.cnblogs.com/haiton/p/15098840.html

相关文章

  • .NET6中的await原理浅析
    前言看过不少关于await的原理的文章,也知道背后是编译器给转成了状态机实现的,但是具体是怎么完成的,回调又是如何衔接的,一直都没有搞清楚,这次下定决心把源码自己跑了下,终于豁然开朗了本文的演示代码基于VS2022+.NET6示例publicclassProgram{staticint......
  • Unity-协程
    Unity-协程协程的简单实现​ 一般的程序执行都是线性的,也就是必须一行一行的执行代码。​ 使用Unity提供的协程,就可以类似于开辟另一条线程,调整根据你所写的代码,调整下一行代码执行的时间。项目示例​ 下面的例子是一个U3DDemo中的代码,实现最简单的Enemy追击Player的......
  • 大师学SwiftUI第9章Part 1 - 异步并发之Task、Async、Await和错误
    其它相关内容请见虚拟现实(VR)/增强现实(AR)&visionOS开发学习笔记苹果系统借助现代处理器的多核可同步执行多条代码,提升同一时间内程序所能执行的任务。例如,一段代码从网上下载文件,另一段代码可以在屏幕上显示进度。此时,我们不能等待第一个执行完后再执行第二个,而必须要同步执行这......
  • 使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的
    内容来自DOChttps://q.houxu6.top/?s=使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的优缺点。目前关于redux的最新讨论焦点是redux-saga/redux-saga。它使用生成器函数来监听/分发actions。在我深入研究之前,我想了解使用redux-saga与下......
  • 关于.net async和await
    async/await异步编程不能提升响应速度,但是可以提升并发量.(比如100个并发请求,假设机器只能同时处理50个请求,用同步的话后面的50个要等待前面的完成才能执行,而使用异步可能可以把机器同时处理50个请求提升到70+,因为线程会回收利用,不会一直等待任务完成,因此可以提高并发量)......
  • async、await的异常处理
    1.简介https://blog.csdn.net/Litt_White/article/details/1262789702.异常处理https://baijiahao.baidu.com/s?id=1778270777795474068&wfr=spider&for=pc......
  • SpringBoot @Async:魔法和陷阱
    来源:https://medium.com/@Async注解就像是springboot项目中性能优化的秘密武器。是的,我们也可以手动创建自己的执行器和线程池,但@Async使事情变得更简单、更神奇。@Async注释允许我们在后台运行代码,因此我们的主线程可以继续运行,而无需等待较慢的任务完成。但是,就像所有秘密武器一......
  • 基于Golang协程实现流量统计系统项目开发
    基于Golang协程实现流量统计系统项目开发上一节课我们已经架设好了一个网站。,但是因为我们的网站没有流量。也生成不了大量的日志,靠我们自己点击生成那点日志也不够测试的。所以这次我们就用GO语言批量生成我们想要的日志。好了。我们开始写代码我用的IDE工具是GOLAND,没有为......
  • GO实现分布式爬虫—掌握go语言通道与协程项目架构设计
    GO实现分布式爬虫—掌握go语言通道与协程项目架构设计Go高并发微服务分布式 1.命令行的用户管理 用户信息存储        =>内存        =>结构[]map        =>用户IDnameageteladdr            [len][]map......
  • 一文快速实战Kotlin协程与Flow
    前言不知道大家有没有跟我一样的感受:即使自己用心在网上学过协程和Flow了,但过了一段时间就又忘掉了。这大部分的原因其实是因为我们缺少实战。我平时工作里根本就接触不到协程和Flow,自己又不敢硬往上写,万一出问题了咋整?所以一直就处于理论学习阶段,导致我学了就跟没学一样。今天就带......