协程asyncio_极简主义的 asyncio 教程

821346a5bdb4054c38de162992936d24.png

提前提醒一句,这篇文章可能是 asyncio 最简单的使用方法,但不一定是最正确的使用方法。如果想系统地学习 Python 中的异步操作,请移步其他文章。

此文章适用于 Python 3.7。


1、使用 async 关键字创建一个协程

async def coro1():
    print('coro1')
    return 'Hello World!'

2、在协程中通过 await 调用其他协程

async def coro2():
    print('coro2')
    # 协程在调用之后不会立即执行,而是返回一个 coroutine
    # 比如 s = coro1() 这种代码是不能得到结果的
    # 只有在 await 之后才会执行
    s = await coro1()
    print(s)

3、使用 asyncio.create_task 来“并行”执行协程

async def coro3():
    print('coro3')
    # coroutine 可以传给 asyncio.create_task,得到一个可以“并行”的 coroutine
    task1 = asyncio.create_task(coro1())
    task2 = asyncio.create_task(coro2())
    await task1
    await task2
    # 虽然是依次 await,但是会“同时”执行

4、使用 asyncio.run 来运行一个协程

async def main():
    await coro3()
if __name__ == '__main__':
    asyncio.run(main())

5、在任何等待操作之前使用 await asyncio.sleep(0) 来让出控制流

import multiprocessing # 这里仅用多进程做示例,
async def coro4():
    print('coro4')
    process = MyProcess() # MyProcess 是一个执行复杂任务的进程
    process.start()
    await asycio.sleep(0) # 这里让出控制流,其他协程会先执行,然后再回到这个协程
    process.join() # 当我们开始等待子进程执行完成的时候,其他协程的工作已经做完了

6、如果正在用的一个库不支持协程,不妨去 PyPI 上找找有没有 aio 开头的库

# 没有示例代码,这一条请自行体会。

7、参照本文时遇到了困难,请去查阅其他更为专业的文章

# 在开头我就说过,这篇文章不一定是最正确的使用方法。

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值