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

  • 内容营销到底是什么?(内容营销指什么)

    内容营销到底是什么?(内容营销指什么)

  • 京东plus会员7天内怎么退款(免费领京东plus会员7天)

    京东plus会员7天内怎么退款(免费领京东plus会员7天)

  • 苹果12屏幕录制怎么设置(苹果12屏幕录制储存失败)

    苹果12屏幕录制怎么设置(苹果12屏幕录制储存失败)

  • OPPO Ace2支持NFC吗(oppoace2支持nfc吗)

    OPPO Ace2支持NFC吗(oppoace2支持nfc吗)

  • 微信把对方删除之后聊天记录还在吗(微信把对方删除了对方知道吗)

    微信把对方删除之后聊天记录还在吗(微信把对方删除了对方知道吗)

  • 哈罗单车月卡时间计算(哈罗单车月卡有时间限制吗)

    哈罗单车月卡时间计算(哈罗单车月卡有时间限制吗)

  • 苹果官换机在哪里购买(苹果官换机在哪买)

    苹果官换机在哪里购买(苹果官换机在哪买)

  • 有指纹和无指纹区别(有指纹和无指纹是什么意思)

    有指纹和无指纹区别(有指纹和无指纹是什么意思)

  • 抖音上显示2个共同好友(抖音上显示2个未登录)

    抖音上显示2个共同好友(抖音上显示2个未登录)

  • 苹果8发烫(苹果8发烫是什么原因)

    苹果8发烫(苹果8发烫是什么原因)

  • 平板可以连接打印机吗(平板可以连接打印机开发票吗)

    平板可以连接打印机吗(平板可以连接打印机开发票吗)

  • qq群课堂会记录时间吗(qq群课堂会记录观看时间会累计吗)

    qq群课堂会记录时间吗(qq群课堂会记录观看时间会累计吗)

  • 怎么注册qq号不用好友辅助(怎么注册qq号不被冻结)

    怎么注册qq号不用好友辅助(怎么注册qq号不被冻结)

  • 手机上面一排孔是什么(手机上面一排孔掉了)

    手机上面一排孔是什么(手机上面一排孔掉了)

  • 闲鱼是先付款再发货吗(闲鱼是先付款再验货吗)

    闲鱼是先付款再发货吗(闲鱼是先付款再验货吗)

  • 为什么苹果11的面部突然用不了(为什么苹果11的网络老是特别差)

    为什么苹果11的面部突然用不了(为什么苹果11的网络老是特别差)

  • qq好友辅助成功后多久收到信息(qq好友辅助成功没反应)

    qq好友辅助成功后多久收到信息(qq好友辅助成功没反应)

  • 京东上合约购机是什么意思(京东上合约购机是正品吗)

    京东上合约购机是什么意思(京东上合约购机是正品吗)

  • 运算器和什么的集合体称为cpu(运算器和什么的功能有关)

    运算器和什么的集合体称为cpu(运算器和什么的功能有关)

  • ipad1893是什么型号(ipad1853是ipad几?)

    ipad1893是什么型号(ipad1853是ipad几?)

  • oppo手机怎么弄小插件(oppo手机怎么弄第二个微信)

    oppo手机怎么弄小插件(oppo手机怎么弄第二个微信)

  • 淘宝人生怎么玩(淘宝人生怎么玩多个账号)

    淘宝人生怎么玩(淘宝人生怎么玩多个账号)

  • vue最多能添加几张照片(vue可以绑定多个事件吗)

    vue最多能添加几张照片(vue可以绑定多个事件吗)

  • iQOO Neo的电池容量(iqoo neo5活力版电池容量)

    iQOO Neo的电池容量(iqoo neo5活力版电池容量)

  • 如何成为架构师(如何成为架构师 源码)

    如何成为架构师(如何成为架构师 源码)

  • 酷狗音乐如何复制歌曲链接(酷狗音乐如何复制歌词手机)

    酷狗音乐如何复制歌曲链接(酷狗音乐如何复制歌词手机)

  • 菜鸟裹裹如何加盟(菜鸟裹裹如何加入拼多多)

    菜鸟裹裹如何加盟(菜鸟裹裹如何加入拼多多)

  • vue面试题整理(2022-持续更新中...)(vue面试题2020)

    vue面试题整理(2022-持续更新中...)(vue面试题2020)

  • 增值税开票软件客服电话
  • 离职补偿的扣税比例
  • 股权转让开票怎么做账
  • 企业筹集资金的最常见及最主要的方式是()
  • 离岸外包和国内外包区别
  • 私企招残疾人可以辞职吗
  • 物业采购主要做什么
  • 销售免税的有机食品
  • 长期股权投资的账面价值怎么计算
  • 财务人士必知消防知识
  • 应收票据怎么写
  • 报销数字证书续费作财务凭证怎么做?
  • 人力资源外包公司排名
  • 资产负债表的编制时间
  • 关联关系案例
  • 上季度多交的增值税怎么做账
  • 优惠购房差价收益是否缴纳个人所得税?
  • 收到加盟费尾款怎么做分录?
  • 公司转账给法人最多可以转多少
  • 预付专利转让费计入什么科目?
  • 三代税款手续费是什么意思
  • 处置股权后相应债权坏账损失怎么处理?
  • 会计中的贷款核算分录是什么?
  • 如果当月增值税进项比销项多怎么结转
  • 其他业务成本属于成本类吗
  • 公司买了一辆二手汽车,怎么入账
  • PHP:Memcached::setMulti()的用法_Memcached类
  • php gethostname
  • php that
  • 投资性房地产后续计量从成本模式转为公允价值模式属于
  • 最快的计算机是量子计算机吗
  • 以不动产作价出资入股
  • 使用灭火器人要站在上风口还是下风口
  • 实收资本 增加
  • 零申报企业所得税怎么申报
  • 织梦cms怎么样
  • 帝国cms扣除会员怎么办
  • 无追保理是投资还是投资
  • 固定资产的会计政策有哪些
  • 合并会计报表编制实例
  • 子公司和分公司的区别
  • 旅游业差额开票税率
  • access数据库不能存放什么数据
  • sql优化的方法及思路
  • 以前未入账固定资产补入账政府会计
  • 代扣代缴的增值税算进项税吗
  • 固定资产相关业务
  • 进项税额已经抵扣会计分录
  • 机场员工家属机票
  • 年末转出未交增值税借方余额怎么处理
  • 结转成本涉及的科目
  • 咨询费开发票应该选哪一项?
  • 税金及附加是什么账户
  • 增值税直接减免额怎么做账
  • sqlserver全文检索
  • windows更新9%
  • windows性能监视器横坐标
  • Windows如何自动关机
  • win10 rs5
  • linux查看组的信息
  • .exe是什么意思
  • win8系统崩溃按f8没用
  • win7系统安装ie11浏览器
  • three.js加载glb文件
  • perl 获取参数
  • 了不起的女孩
  • python 详细
  • nodejs使用视频教程
  • android触屏事件的处理
  • import python-docx
  • unity ngui
  • jq 使用
  • javascript怎么学好
  • 安卓短信提示
  • JavaScript中的NaN代表什么
  • 如何打印个人所得税的税单
  • 特斯拉绿色牌照
  • 纳税人逾期未申报的原因有哪些
  • 快递公司开票
  • 乳胶枕属于什么经营范围
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设