当前位置:   article > 正文

python asyncio理解_深入理解Python中的asyncio

python asyncio理解_深入理解Python中的asyncio

asyncio介绍

熟悉c#的同学可能知道,在c#中可以很方便的使用async和await来实现异步编程,那么在python中应该怎么做呢,其实python也支持异步编程,一般使用asyncio这个库,下面介绍下什么是asyncio:

asyncio 是用来编写 并发 代码的库,使用async/await语法。

asyncio 被用作多个提供高性能Python异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。

asyncio 往往是构建 IO 密集型和高层级 结构化 网络代码的最佳选择。

asyncio中的基本概念

可以看见,使用asyncio库我们也可以在python代码中使用async和await。在asyncio中,有四个基本概念,分别是:

Eventloop

Eventloop可以说是asyncio应用的核心,中央总控,Eventloop实例提供了注册、取消、执行任务和回调 的方法。

简单来说,就是我们可以把一些异步函数注册到这个事件循环上,事件循环回循环执行这些函数(每次只能执行一个),如果当前正在执行的函数在等待I/O返回,那么事件循环就会暂停它的执行去执行其他函数。当某个函数完成I/O后会恢复,等到下次循环到它的时候就会继续执行。

Coroutine

协程本质就是一个函数,

import asyncio

import time

async def a():

print('Suspending a')

await asyncio.sleep(3)

print('Resuming a')

async def b():

print('Suspending b')

await asyncio.sleep(1)

print('Resuming b')

async def main():

start = time.perf_counter()

await asyncio.gather(a(), b())

print(f'{main.__name__}Cost:{time.perf_counter() - start}')

if __name__ == '__main__':

asyncio.run(main())

执行上述代码,可以看到类似这样的输出:

Suspending a

Suspending b

Resuming b

Resuming a

main Cost: 3.0023356619999997

关于协程的具体介绍,可以参考我以前的文章 python中的协程 不过以前的那种写法,需要使用装饰器,已经过时了。

Future

Future是表示一个“未来”对象,类似于javascript中的prom

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/658114
推荐阅读
相关标签
  

闽ICP备14008679号