前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python异步编程之 协程 & asyncio & 异步

Python异步编程之 协程 & asyncio & 异步

原创
作者头像
GhostCN_Z
修改2020-09-04 14:23:32
6290
修改2020-09-04 14:23:32
举报
文章被收录于专栏:GhostCN_Z

协程

实现协程的方法:

  1. greenlet 早期模块
  2. yield关键字
  3. asyncio装饰器(python3.4加入)
  4. async、await关键字(python3.5加入)推荐使用

asyncio的使用

在python3.4及之后加入内置模块

代码语言:javascript
复制
import asyncio


@asyncio.coroutine
def func1():
    print('函数func1')
    yield asyncio.sleep(5)
    print('函数func1完成')


@asyncio.coroutine
def func2():
    print('函数func2')
    yield asyncio.sleep(3)
    print('函数func2完成')


tasks = [
    asyncio.ensure_future(func1()),
    asyncio.ensure_future(func2()),
]

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

async & await 关键字

python3.5之后版本

代码语言:javascript
复制
import asyncio


async def func1():
    print('函数func1')
    await asyncio.sleep(5)
    print('函数func1完成')


async def func2():
    print('函数func2')
    await asyncio.sleep(3)
    print('函数func2完成')


tasks = [
    asyncio.ensure_future(func1()),
    asyncio.ensure_future(func2()),
]

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协程
    • 实现协程的方法:
      • asyncio的使用
        • async & await 关键字
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档