基于协程的异步编程(协程)-1

2020-06-09 分类:Python 阅读(225) 评论(0)

协程

协程不是计算机提供的,是程序员人为创造,也可以称为微线程
简而言之就是通过一个线程实现在代码块中互相切换。

协程的意义是什么?
在一个线程中如果遇到了io等待了,线程不在一直等着,利用空闲时间去干点别的事,充分利用线程。

Python中实现写成的几种方式

通过greenlet实现

通过yield关键字实现

通过asyncio模块实现

python3.5以后 可以通过async & await关键字使用 (推荐)

本质和上面3中的使用相同,只是去掉了装饰器和yield 换成了async 和 await
强悍之处在与,遇到io情况,主动切换,而不是像上面需要手动切换。

什么是事件循环

uvloop

asyncio默认事件循环的替代品。

 

您可能也喜欢:

基于协程的异步编程(异步上下文管理器)-5

普通上下文管理器 上下文管理举例来说 比如你想要链接数据,然后自己总忘记关闭连接,就可以使用上下文管理器来实现 可以将获取资源链接放到__enter__中,将资源关闭放到__exit__中。 使用with ContextManager() as f: 就可以自动关闭链接了。实例时会先执行__ente...

more

基于协程的异步编程(Future)-4

Future对象 Future是Task的基类,task内部的await等待通过Future对象实现。 12345678910111213141516171819202122232425262728293031...

more

基于协程的异步编程(Task)-3

TASK对象 task对象用于并发调度协程,实际上就是将任务添加到事件循环中等待这被执行。 可以使用asyncio.create_task()"3.7及以后版本",也可以使用loop.create_task()或者asyncio.ensure_future()。 例子1: ...

more

评论已关闭

登录

忘记密码 ?

切换登录

注册