正确理解协程

简介: 正确理解协程

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 后面必须跟协程,而不是普通函数。

相关文章
|
1月前
|
Java Linux Go
协程的设计原理(一)
协程的设计原理(一)
28 0
|
1月前
|
存储 前端开发 rax
协程设计与原理(二)
协程设计与原理(二)
14 0
|
4月前
|
编译器 程序员 调度
协程问题之C++20 的协程实现是基于哪种协程模型的
协程问题之C++20 的协程实现是基于哪种协程模型的
|
6月前
|
前端开发 程序员 调度
探索协程在 C++ 中的实现方式
探索协程在 C++ 中的实现方式
170 2
|
6月前
|
程序员 Go 数据处理
|
6月前
|
存储 前端开发 rax
|
11月前
|
程序员 调度 C#
协程是什么?为何说协程具有同步的编程方式又具有异步的性能?
协程是什么?为何说协程具有同步的编程方式又具有异步的性能?
272 0
|
存储 前端开发 rax
2.7 协程设计原理
2.7 协程设计原理
71 0
|
数据采集 算法 安全
深入探究进程、线程和协程:并发编程的三重境界
深入探究进程、线程和协程:并发编程的三重境界
|
安全 调度 开发者
并发异步编程之争:协程(asyncio)到底需不需要加锁?(线程/协程安全/挂起/主动切换)Python3
协程与线程向来焦孟不离,但事实上是,线程更被我们所熟知,在Python编程领域,单核同时间内只能有一个线程运行,这并不是什么缺陷,这实际上是符合客观逻辑的,单核处理器本来就没法同时处理两件事情,要同时进行多件事情本来就需要正在运行的让出处理器,然后才能去处理另一件事情,左手画方右手画圆在现实中本来就不成立,只不过这个让出的过程是线程调度器主动抢占的。
并发异步编程之争:协程(asyncio)到底需不需要加锁?(线程/协程安全/挂起/主动切换)Python3
下一篇
无影云桌面