Python编程:协程async和await

简介: Python编程:协程async和await

Python 3.5

把@asyncio.coroutine替换为async;
把yield from替换为await

用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。

以下两种写法等价

@asyncio.coroutine
def hello():
    print("Hello world!")
    r = yield from asyncio.sleep(1)
    print("Hello again!")

python3.5

async def hello():
    print("Hello world!")
    r = await asyncio.sleep(1)
    print("Hello again!")

协程示例

import asyncio
import time
now = lambda : time.time()
async def hello():
    print("hello")
    await asyncio.sleep(2)
    return "done"
start = now()
# 协程对象
h1 = hello()
h2 = hello()
h3 = hello()
# 创建一个事件loop
loop = asyncio.get_event_loop()
# 任务(task)对象
tasks = [
    asyncio.ensure_future(h1),
    asyncio.ensure_future(h2),
    asyncio.ensure_future(h3),
]
# 将协程加入到事件循环loop
loop.run_until_complete(asyncio.wait(tasks))
for task in tasks:
    print(task.result())
print(now()-start)
"""
hello
hello
hello
done
done
done
2.005011796951294
"""

参考

  1. 廖雪峰pyhton -async/await
  2. python中重要的模块–asyncio
相关文章
|
8天前
|
安全 调度 Python
探索Python中的并发编程:协程与多线程的比较
本文将深入探讨Python中的并发编程技术,重点比较协程与多线程的特点和应用场景。通过对协程和多线程的原理解析,以及在实际项目中的应用案例分析,读者将能够更好地理解两种并发编程模型的异同,并在实践中选择合适的方案来提升Python程序的性能和效率。
|
1天前
|
C语言 Python
专为编程小白设计的Python零基础入门教程,GitHub星标破W
市面上大多数技术类的书籍都着重于一步步的构建系统的知识体系,并不是说这样就是不对的,但这样按部就班的学习注定了需要花费大量的时间用来掌握“基础知识”,或死记硬背,或慢慢理解。 然而世界不会迁就你,而是在步步紧逼的告诉你要赶紧学完,赶紧找工作,赶紧挣钱,这才是你生活的基础。 今天给小伙伴们带来了一份《编程小白的第一步Python书》,这本书是专为零基础小白设计的,不会告诉“先学C语言,会更好理解Python”这种狗屁道理。而是先带你掌握搭建项目所用到的最少得知识,再真实的项目搭建中实践自己的所学,逐渐的完善知识体系
|
2天前
|
存储 算法 安全
Python编程实验六:面向对象应用
Python编程实验六:面向对象应用
18 1
|
2天前
|
Python
Python编程作业五:面向对象编程
Python编程作业五:面向对象编程
16 1
|
2天前
|
存储 人工智能 自然语言处理
Python编程实验五:文件的读写操作
Python编程实验五:文件的读写操作
9 0
|
2天前
|
存储 传感器 Python
Python编程作业四:文件操作
Python编程作业四:文件操作
14 0
|
2天前
|
存储 算法 Python
Python编程作业一:程序基本流程
Python编程作业一:程序基本流程
9 0
|
2天前
|
调度 Python
Python进阶---多任务编程
Python进阶---多任务编程
13 3
|
3天前
|
机器学习/深度学习 缓存 人工智能
令你膛目结舌的代码技巧 —— Python编程代码技巧
令你膛目结舌的代码技巧 —— Python编程代码技巧
14 2
|
3天前
|
数据采集 算法 Python
2024年Python最全python基础入门:高阶函数,小米面试编程题
2024年Python最全python基础入门:高阶函数,小米面试编程题