位置: 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表单验证并提交表单)

  • p30pro指纹识别不灵敏(p30pro指纹识别不见了)

    p30pro指纹识别不灵敏(p30pro指纹识别不见了)

  • 苹果网页下载安装不了(苹果下载网页app怎么安装)

    苹果网页下载安装不了(苹果下载网页app怎么安装)

  • 微信号封号多少天解除(微信号封号多少天)

    微信号封号多少天解除(微信号封号多少天)

  • 手机使用年限(手机使用年限多久)

    手机使用年限(手机使用年限多久)

  • 一亿像素手机有哪些(一亿像素手机有什么区别)

    一亿像素手机有哪些(一亿像素手机有什么区别)

  • 重复文件可以删除吗(重复文件可以删除吗电脑)

    重复文件可以删除吗(重复文件可以删除吗电脑)

  • 微pe装win10重启进不去系统(微pe重做系统)

    微pe装win10重启进不去系统(微pe重做系统)

  • 小新pro13关盖子就关机吗(联想小新pro13关盖会自动关机吗)

    小新pro13关盖子就关机吗(联想小新pro13关盖会自动关机吗)

  • 华为手机桌面右边只显示一半(华为手机桌面布局锁定怎么解开)

    华为手机桌面右边只显示一半(华为手机桌面布局锁定怎么解开)

  • 小米盒子需要连接网线吗(小米盒子需要连网吗)

    小米盒子需要连接网线吗(小米盒子需要连网吗)

  • 微信没有查看原图选项(微信没有查看原视频按钮)

    微信没有查看原图选项(微信没有查看原视频按钮)

  • 电脑上怎么做电子文档(电脑上怎么做电子表格教程)

    电脑上怎么做电子文档(电脑上怎么做电子表格教程)

  • havic139耳机怎么连接

    havic139耳机怎么连接

  • 苹果手机进软件老是闪退怎么回事(苹果手机进软件黑屏)

    苹果手机进软件老是闪退怎么回事(苹果手机进软件黑屏)

  • 三星W20 5G闪存规格是多少(三星w20多少内存)

    三星W20 5G闪存规格是多少(三星w20多少内存)

  • vivo手机如何打开呼吸灯(vivo手机如何打开手电筒)

    vivo手机如何打开呼吸灯(vivo手机如何打开手电筒)

  • 手机qq看点里怎么发视频(手机qq看点怎么看文章)

    手机qq看点里怎么发视频(手机qq看点怎么看文章)

  • 荣耀9有脸部识别吗(荣耀9有脸部识别功能吗)

    荣耀9有脸部识别吗(荣耀9有脸部识别功能吗)

  • 三星手机有应用分身吗(三星手机有应用宝吗)

    三星手机有应用分身吗(三星手机有应用宝吗)

  • 钉钉号是什么意思(钉钉是什么意思解释)

    钉钉号是什么意思(钉钉是什么意思解释)

  • 抖音如何注销实名(抖音如何注销实名认证信息)

    抖音如何注销实名(抖音如何注销实名认证信息)

  • 快手怎么设置特别提醒(快手怎么设置特别关心提示音)

    快手怎么设置特别提醒(快手怎么设置特别关心提示音)

  • 抖音上热门审核要多久(抖音上热门审核不通过钱会退回来吗)

    抖音上热门审核要多久(抖音上热门审核不通过钱会退回来吗)

  • 【计算机网络】HTTPS协议原理(计算机网络的定义)

    【计算机网络】HTTPS协议原理(计算机网络的定义)

  • 进项税认证后转出
  • 建筑业小规模纳税人 扣除分包款 开票
  • 免费样品需要交印花税吗
  • 个人所得税红利20%
  • 出口结汇必须要开票吗
  • 研发费用成本化和费用化
  • 金税盘可以用安卓的线吗
  • 会计软件每年都要付钱的吗
  • 一般纳税人劳务费税率是13还是6
  • 合伙制创投企业
  • 企业筹办期间可以贷款吗
  • 购房所需的税费种类和费用
  • 小规模纳税人销售额
  • 按利润总额的25%计算应交所得税
  • 编制现金流量表的直接法和间接法
  • 冲销去年费用
  • 银行余额不平怎么快速找原因
  • 新成立的有限公司
  • 购买商品接受劳务的现金流包括哪些
  • 违约方能否要求返还价款
  • 包装物押金为什么含税
  • 如何删除驱动器里面的文件
  • win10右键个性化打不开 没有与之关联程序
  • 异地提供建筑服务预缴增值税
  • 装电脑系统的方法和步骤
  • php抓取网页指定内容
  • iis搭建php环境
  • 应付账款周转天数长对企业的影响
  • 未分配利润转增股本 母公司会计分录
  • 白条入账会计要负刑事责任吗
  • 支票怎么用,开了支票立即可以取钱吗
  • 赠送礼品账务处理
  • 今天是520该说什么
  • 增值税专用发票查询系统官方网站
  • vue-nginx刷新404问题
  • 土地出让金返还比例是多少
  • 企业对外担保能收担保费吗
  • 外币报表折算差额会计分录
  • 开红字信息表后的账务处理
  • 代发工资的账务处理需要什么资料
  • 主营业务成本可以设置二级科目吗
  • 建筑公司劳务发票
  • 增值税专用发票电子版
  • 收支平衡表怎么做工厂表格
  • 采购成本和销售成本的核算
  • 固定资产未入账的定性依据
  • 两处取得工资薪金如何申报
  • 劳务公司在异地施工要在哪里缴税
  • 个人所得税征税对象是什么
  • 上市公司限制性股票个人所得税
  • 预缴税款如何做账
  • 纸质汇票什么时候能到账
  • 社会团体收到财政拨款
  • 运费未付的会计分录怎么做
  • 公司坏账率一般多少
  • mysql深入解析
  • 设置mysql数据库字符集的语句
  • mysql免安装版下载
  • mysql的多表查询语句
  • win8系统怎么安装微信
  • fedora iso
  • freebsd ports安装
  • win8怎么格式化硬盘
  • win7与vista关系
  • Windows下查看PCI插槽链路
  • win7c盘winsxs
  • 访问win10
  • 常用的linux系统版本有哪些
  • Android开源ui框架
  • unity 3d教程
  • vue父子组件之间的通讯
  • 一次性批量随机抽取
  • shell脚本随机数
  • android基础知识入门
  • javascript语言基础
  • 手机 日常应用 单核 多核
  • 终于实现的图片
  • jquery添加自定义属性
  • wxpython中Textctrl回车事件无效的解决方法
  • 江之都财税服务集团有限公司地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设