
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
python编程开发是我们在学习计算机编程语言的时候需要重点掌握的一个编程语言,下面我们就一起来了解一下,python编程异步编程实现方法。
Python生态系统中还有其它基于协程的异步方案,例如Trio和Curio。还有Twisted,它是所有协程框架中古老的,甚至出现得比asyncio都要早。
如果你对编写异步Web应用程序感兴趣,有许多基于协程的异步框架可以选择,包括aiohttp、sanic、FastAPI和Tornado。
很多人不知道的是,协程只是Python中编写异步代码的两种方法之一。二种方法是基于一个叫做greenlet的库,你可以用pip安装它。Greenlets和协程类似,它们也允许一个Python函数暂停执行并稍后恢复,但是它们实现这点的方式完全不同,这意味着Python中的异步生态系统分成两大类。
协程与greenlets之间针对异步开发有意思的区别是,前者需要Python语言特定的关键字和特性才能工作,而后者并不需要。我的意思是,基于协程的应用程序需要使用一种特定的语法来书写,而基于greenlet的应用程序看起来几乎和普通Python代码一样。这非常酷,因为在某些情况下,这让同步代码可以被异步执行,这是诸如asyncio之类的基于协程的方案做不到的。
那么在greenlet方面,跟asyncio对等的库有哪些?我知道3个基于greenlet的异步包:Gevent、Eventlet和Meinheld,尽管后一个更像是一个Web服务器而不是一个通用的异步库。它们都有自己的异步循环实现,而且它们都提供了一个有趣的“monkey-patching”功能,取代了Python标准库中的阻塞函数,例如那些执行网络和线程的函数,并基于greenlets实现了等效的非阻塞版本。如果你有一些同步代码想要异步运行,这些包会对你有所帮助。
据我所知,明确支持greenlet的Web框架只有Flask。这个框架会自动监测,当你想要运行在一个greenletWeb服务器上时,它会自我进行相应调整,而无需进行任何配置。这么做时,你需要注意不要调用阻塞函数,或者,如果你要调用阻塞函数,好用猴子补丁来“修复”那些阻塞函数。
但是,Flask并不是受益于greenlets的框架。其它Web框架,例如Django和Bottle,虽然没有greenlets,但也可以通过结合一个greenletWeb服务器并使用monkey-patching修复阻塞函数的方式来异步运行。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。