当前位置: 首页 > news >正文

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

Come on! It makes you change all your project because of one asyncio

usage. Tell me this is not true.

这是真的 :)

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

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

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

import asyncio

def 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: 2504097887120

Results: [2504097887120, 2504104854416, 2504104854136]

但是,再次重申,相信您,如果有一天继续以这种方式编写代码,您将真的后悔.如果要充分利用异步编程的优势,请使用协程并显式等待.

相关文章:

  • springboot打包成war_经常出现的13道SpringBoot相关的面试问题(含答案)
  • springsecurity不拦截某个接口_Spring Security (一):Simple Demo
  • enityframework 已连接的当前状态为打开。_Http 持久连接与 HttpClient 连接池,有哪些不为人知的关系?...
  • 脚本录制软件python 按键精灵 tc_从10种脚相看你的财运
  • 用eviews计算产出弹性_深圳竞价优化|投放都和产出差不多了,还有人在投竞价...
  • qq登录界面句柄_天天玩QQ!知道登录界面那两个人是谁吗?网友:不是情侣?...
  • led数字字体_led显示屏知识大全
  • python设置单元格宽度_ms-word – Python-docx,如何在表中设置单元格宽度?
  • c++判断整数翻转溢出_CBC字节翻转攻击解析
  • python调用数据库存储过程_Mysql学习---使用Python执行存储过程
  • python实现中值滤波_Python 实现中值滤波、均值滤波
  • bigdecimal不保留小数_深入理解 BigDecimal
  • mysql 去重复查询_MySQL事务隔离级别和实现原理(看这一篇文章就够了!)
  • matlab追赶法解三对角方程组_高斯消元法解线性方程组
  • case when then else_第6章 函数、谓词、CASE表达式及练习题
  • 收藏网友的 源程序下载网
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【个人向】《HTTP图解》阅后小结
  • AngularJS指令开发(1)——参数详解
  • Angular数据绑定机制
  • classpath对获取配置文件的影响
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Javascript弹出层-初探
  • Laravel 菜鸟晋级之路
  • Puppeteer:浏览器控制器
  • vue-router的history模式发布配置
  • yii2中session跨域名的问题
  • 缓存与缓冲
  • 经典排序算法及其 Java 实现
  • 前端_面试
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何在 Tornado 中实现 Middleware
  • 使用 Docker 部署 Spring Boot项目
  • 探索 JS 中的模块化
  • 一起参Ember.js讨论、问答社区。
  • 原生Ajax
  • 云大使推广中的常见热门问题
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.9) MSP (version 4.2)
  • (175)FPGA门控时钟技术
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计ssm电影分享网站
  • (六)Hibernate的二级缓存
  • (转)EOS中账户、钱包和密钥的关系
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .Net 6.0 处理跨域的方式
  • .NET CORE Aws S3 使用
  • .NET Core跨平台微服务学习资源
  • .net framework 4.0中如何 输出 form 的name属性。