正确理解协程

简介: 正确理解协程

import asyncio

定义一个异步函数(协程)

async def say_after(delay, what):

# 等待指定的时间
await asyncio.sleep(delay)
# 打印消息
print(what)

定义另一个异步函数

async def main():

# 同时启动两个协程,并等待这2个协程结束
await say_after(1, 'hello')
await say_after(2, 'world')

运行主函数

asyncio.run(main())
正确理解

当执行这句 await say_after(1, 'hello') 将会交出程序控制权,等待 say_after(1, 'hello')执行完,当然系统也有机会执行其他协程(看系统调度)。

await 后面必须跟协程,而不是普通函数。

相关文章
|
8月前
|
编译器 程序员 调度
协程问题之C++20 的协程实现是基于哪种协程模型的
协程问题之C++20 的协程实现是基于哪种协程模型的
|
数据采集 算法 安全
深入探究进程、线程和协程:并发编程的三重境界
深入探究进程、线程和协程:并发编程的三重境界
|
存储 缓存 Java
抽丝剥茧聊Kotlin协程之协程与线程之间的区别
抽丝剥茧聊Kotlin协程之协程与线程之间的区别
|
存储 前端开发 rax
2.7 协程设计原理
2.7 协程设计原理
93 0
|
5月前
|
Java Linux Go
协程的设计原理(一)
协程的设计原理(一)
55 0
|
10月前
|
存储 前端开发 rax
|
5月前
|
存储 前端开发 rax
协程设计与原理(二)
协程设计与原理(二)
34 0
|
10月前
|
数据采集 Python
Python多线程与异步IO的对比:何时选择哪种并发模型
Python多线程与异步IO的对比:何时选择哪种并发模型
443 1
协程搬运工-组合挂起函数
协程搬运工-组合挂起函数
133 0
|
Java .NET C#
C#并发编程之异步编程(线程讨论)
C#并发编程之异步编程(线程讨论)写在前面本篇是异步编程系列的第三篇,本来计划第三篇的内容是介绍异步编程中常用的几个方法,但是前两篇写出来后,身边的朋友总是会有其他问题,所以决定在续写一篇,作为异步编程(一)和异步编程(二)的补充。
1469 0