赞
踩
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
异步编程在过去的几年里获得了大量的支持,这是有原因的。虽然它比传统的流式编程更难,但是也更高效。
例如,使用Python异步协同程序,在继续执行前不需要等待HTTP请求完成,你可以提交请求,一边做其他队列中等待的工作一边等待HTTP请求完成。这可能需要思考更多来获得正确的逻辑,但是你可以以更少的资源处理更多的工作。
即便如此,异步函数的语法和执行在Python这样的语言中实际上并不困难。
异步性似乎是node.js在服务器端编程如此受欢迎的最大原因。我们写的大部分代码取决于外部资源,尤其是在像网站一样的重IO应用。依赖外部资源可以是任何东西,从远程数据库调用到给REST服务发送POST请求。一旦你请求这些资源,你的代码就开始等待不做其他事情。
使用异步编程,在等待其他资源响应时,允许代码处理其他任务。
协程
Python中的异步函数通常被称为“协程”,它仅仅是一个采用异步关键字或是用@asyncio.coroutine装饰的函数。两个函数中的任何一个都将作为协同程序工作并且类型是等效的:
这些特殊函数当被调用时返回协同对象时。如果你熟悉JavaScript Promises对象的话,你可以把这个返回对象看作Promises对象。调用这些函数的任何一个实际上并没有运行他们,而是返回一个协同程序对象,然后可以传递到事件循环执行。
如果你需要决定一个函数是否是协同程序,asyncio提供了asyncio.iscoroutinefunction(func) 方
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。