栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

异步-同步-在一个python事件循环中异步调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异步-同步-在一个python事件循环中异步调用

来吧!由于使用了一种异步方式,它使您可以更改所有项目。告诉我这不是真的。

这是真的

使用

await
关键字的整个想法是在一个事件循环中从代码的不同位置执行并发作业(这对于常规功能代码是无法做到的)。

asyncio
-不是某种实用程序,而是编写异步程序的整体风格。


另一方面,Python非常灵活,因此您仍然可以尝试隐藏asyncio的使用。如果您确实想要获取3个Fetcher实例的同步结果,则可以执行以下操作:

import asynciodef sync_exec(coro):    loop = asyncio.get_event_loop()    return loop.run_until_complete(coro)class Fetcher:    async def async_get_result(self):        # async interface:        async def async_job(): await asyncio.sleep(1) return id(self)        return (await async_job())    def get_result(self):        # sync interface:        return sync_exec(self.async_get_result())    @classmethod    def get_results(cls, *fetchers):        # sync interface multiple:        return sync_exec( asyncio.gather(*[fetcher.async_get_result() for fetcher in fetchers])        )# single sync get_result:f1 = Fetcher()print('Result: ', f1.get_result())# multiple sync get_result:f2 = Fetcher()f3 = Fetcher()print('Results: ', Fetcher.get_results(f1, f2, f3))

输出:

Result:  2504097887120Results:  [2504097887120, 2504104854416, 2504104854136]

但是,再次重申,如果您继续以这种方式编写代码,您一定会后悔的,相信我。如果要充分利用异步编程的优势,请使用

coroutines
await
显式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号