位置: IT常识 - 正文

深究Python中的asyncio库-线程同步

编辑:rootadmin

推荐整理分享深究Python中的asyncio库-线程同步,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前面的代码都是异步的,就如sleep,需要用asyncio.sleep而不是阻塞的time.sleep,如果有同步逻辑,怎么利用asyncio实现并发呢?答案是用run_in_executor。在一开始我说过开发者创建 Future 对象情况很少,主要是用run_in_executor,就是让同步函数在一个执行器( executor)里面运行。

深究Python中的asyncio库-线程同步

同步代码

defa():time.sleep(1)return'A'asyncdefb():awaitasyncio.sleep(1)return'B'defshow_perf(func):print('*'*20)start=time.perf_counter()asyncio.run(func())print(f'{func.__name__}Cost:{time.perf_counter()-start}')asyncdefc1():loop=asyncio.get_running_loop()awaitasyncio.gather(loop.run_in_executor(None,a),b())In:show_perf(c1)********************c1Cost:1.0027242230000866

可以看到用run_into_executor可以把同步函数逻辑转化成一个协程,且实现了并发。这里要注意细节,就是函数a是普通函数,不能写成协程,下面的定义是错误的,不能实现并发:

asyncdefa():time.sleep(1)return'A'

因为 a 里面没有异步代码,就不要用async def来定义。需要把这种逻辑用loop.run_in_executor封装到协程:

asyncdefc():loop=asyncio.get_running_loop()returnawaitloop.run_in_executor(None,a)

大家理解了吧?

loop.run_in_executor(None, a)这里面第一个参数是要传递concurrent.futures.Executor实例的,传递None会选择默认的executor:

In:loop._default_executorOut:<concurrent.futures.thread.ThreadPoolExecutorat0x112b60e80>

当然我们还可以用进程池,这次换个常用的文件读写例子,并且用:

asyncdefc3():loop=asyncio.get_running_loop()withconcurrent.futures.ProcessPoolExecutor()ase:print(awaitasyncio.gather(loop.run_in_executor(e,a),b()))In:show_perf(c3)********************['A','B']c3Cost:1.0218078890000015
本文链接地址:https://www.jiuchutong.com/zhishi/303151.html 转载请保留说明!

上一篇:python中series如何转为list?(python的series)

下一篇:vant 的表单校验(vant表单验证并提交表单)

  • 税种核定在电子版怎么查
  • 汽车增值税是企业交给国家的税
  • 流转税率是什么意思
  • 汇算清缴银行手续费
  • 跨越发票冲红,填了红字信息表,没有负数发票
  • 小微企业享受减免税政策
  • 房地产企业拆迁安置土地增值税清算疑点
  • 现金流管理模式
  • 英国租金收入所得税
  • 基本存款账户能向银行借款吗
  • 私营独资企业需要做账吗
  • 软件企业涉税风险分析
  • 三证合一后还要去税务局吗
  • 加计扣除汇算清缴怎么调减
  • 计提坏账损失纳税的调整
  • 支票作废了需要什么材料
  • 资产转让税费哪方承担
  • 递延收益在现金流量表体现吗
  • 公司对外汇款需要什么手续
  • 对公账户转钱出来
  • 企业当年实现的净利润
  • 投资公司的股东
  • 营改增之后账务怎么处理
  • 购货方获得现金折扣的会计分录怎么写
  • 收回已确认的坏账准备
  • vue3.0 element ui
  • element ui el-table
  • php执行mysql语句的函数
  • 小规模核定征收突然转查账
  • 完美解决战网已休眠正在唤醒它
  • 乌尤尼盐沼的演化过程
  • 注册资金不能到位怎么办
  • php bind_result
  • 什么是非营利性养老机构
  • 蓝色向日葵
  • 公司给员工餐补计入
  • 劳保用品会计科目进什么科目
  • 帝国cms添加栏目前台不显示
  • 开发成本结转开发产品的分录
  • 免征增值税的项目可以开专票吗
  • 出售无形资产损益怎么算
  • python怎么用
  • rhel6安装教程
  • sql自增1
  • 织梦怎么改网站主页
  • 财务应付
  • 公司福利可以发现金吗
  • 外商投资企业 外资企业
  • 应收账款是指什么
  • 小微企业是怎样自己认定的呢
  • 报销差旅费如何做记账凭证
  • 固定资产暂停使用申请怎么写
  • 报销烟酒的分录是什么
  • 公司账户没有钱怎么发工资
  • 软件开发公司账一定按项目做吗
  • 国家法定滞纳金规定
  • 单位统一订员工餐
  • 股票增发给谁
  • ubuntu 安装
  • 微软桌面 ios
  • 组建,加入或退出工会都是基于
  • ubuntu搜索已安装软件
  • 苹果电脑如何查看WiFi密码
  • 红帽子一个月能挣多少钱
  • win7出现问题
  • win7系统开机后很卡什么原因
  • win xp怎么样
  • windows7的管理在哪里
  • owmngr.exe - owmngr是什么进程 作用是什么
  • win8查看已连接的wifi密码
  • win8的桌面文件在哪里
  • Cocos2dx3.2 Crazy Tetris update 定时更新 游戏逻辑处理
  • 深入理解计算机系统 电子书
  • 计提税金的公式
  • 联合举办的活动
  • 任何基金都可以转让吗
  • 内蒙古城镇土地使用税税率表
  • 航空煤油消费税征收环节
  • 异地预缴增值税销售额是含税
  • 普通手写发票税点多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设