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

  • 团购活动策划方案分享(团购活动策划的六大要素)

    团购活动策划方案分享(团购活动策划的六大要素)

  • 红米k50至尊版怎么设置锁屏时间(红米k50至尊版怎么关闭系统更新)

    红米k50至尊版怎么设置锁屏时间(红米k50至尊版怎么关闭系统更新)

  • 华为智能门锁可以远程开门吗(华为智能门锁可以用其他安卓手机开门吗)

    华为智能门锁可以远程开门吗(华为智能门锁可以用其他安卓手机开门吗)

  • 华为手机可以下载两个同版本的微信吗(华为手机可以下载ChatGpT吗)

    华为手机可以下载两个同版本的微信吗(华为手机可以下载ChatGpT吗)

  • 图片内存大小怎么改(图片内存大小怎么变小)

    图片内存大小怎么改(图片内存大小怎么变小)

  • 电脑显示bootmgrismissing怎么办(电脑显示BOOTMGR已丢失)

    电脑显示bootmgrismissing怎么办(电脑显示BOOTMGR已丢失)

  • 微信怎么发超过200的红包(微信怎么发超过一个g的文件)

    微信怎么发超过200的红包(微信怎么发超过一个g的文件)

  • 什么软件可以去视频水印(什么软件可以去红眼)

    什么软件可以去视频水印(什么软件可以去红眼)

  • 开启会议直播是什么意思(开启会议直播是啥意思)

    开启会议直播是什么意思(开启会议直播是啥意思)

  • backup文件夹可以删除吗(backup文件夹可以全部删除吗)

    backup文件夹可以删除吗(backup文件夹可以全部删除吗)

  • 苹果音质有噪音怎么办(iphone音质很杂)

    苹果音质有噪音怎么办(iphone音质很杂)

  • 手机qq上svip能隐藏吗(手机qqsvip可以隐藏吗)

    手机qq上svip能隐藏吗(手机qqsvip可以隐藏吗)

  • oppoa11呼吸灯怎么设置(oppo啊a11x手机呼吸灯设置)

    oppoa11呼吸灯怎么设置(oppo啊a11x手机呼吸灯设置)

  • 怎样录屏微信聊天语音(怎样录屏微信聊天视频)

    怎样录屏微信聊天语音(怎样录屏微信聊天视频)

  • 手机号欠费了不交有什么影响(手机号欠费了不注销会怎么样)

    手机号欠费了不交有什么影响(手机号欠费了不注销会怎么样)

  • 电脑版微信设置摄像头(电脑版微信设置在哪里)

    电脑版微信设置摄像头(电脑版微信设置在哪里)

  • vue可以调速度嘛(vue如何调速度)

    vue可以调速度嘛(vue如何调速度)

  • 华为mate30有屏幕指纹吗(华为mate30有屏幕共享吗)

    华为mate30有屏幕指纹吗(华为mate30有屏幕共享吗)

  • mate30可以自己下载谷歌服务吗(华为mate30怎么下载第三方软件)

    mate30可以自己下载谷歌服务吗(华为mate30怎么下载第三方软件)

  • 抖音能加微信好友吗(抖音加微信好友)

    抖音能加微信好友吗(抖音加微信好友)

  • 荣耀20支持otg吗(荣耀20有ot g功能吗)

    荣耀20支持otg吗(荣耀20有ot g功能吗)

  • 中国移动机顶盒怎么连接wifi(中国移动机顶盒怎么看电视频道)

    中国移动机顶盒怎么连接wifi(中国移动机顶盒怎么看电视频道)

  • carlife蓝牙连接流程(carlife连接后怎么用蓝牙播放音乐)

    carlife蓝牙连接流程(carlife连接后怎么用蓝牙播放音乐)

  • 魅族显示手机已锁定(魅族手机一直显示flyme是怎么回事)

    魅族显示手机已锁定(魅族手机一直显示flyme是怎么回事)

  • unet网络详解(unet网络的优缺点)

    unet网络详解(unet网络的优缺点)

  • 汽车保养 美容
  • 没有提取盈余公积的情况
  • 标书费没有发票收据可以入帐吗
  • 转出未交增值税借方
  • 承兑找零怎么做账务处理
  • 年报后 申报报表年初数会调整吗
  • 缴纳社保的基数是什么意思
  • 分支机构是不是需要设立账簿
  • 新能源汽车补贴2023年政策
  • 外购货物用于捐赠的会计分录
  • 印花税购销合同计税金额怎么算
  • 保证金存款余额
  • 企业贷款核销条件
  • 给员工发结婚礼金怎么说
  • 物业公司代收水电费会计分录
  • 什么叫社保人员
  • 非营业活动交增值税吗
  • 写着个人的发票能下账吗
  • 保理利息开具增值税专用发票
  • 其他资本公积如何花掉
  • 未分配50g
  • 门店里备用客户喝的茶叶怎么入账?
  • 电子发票没有发票号码是怎么回事
  • 盘亏的转销金额
  • 进口货物的企业有哪些
  • 电脑隐藏软件图标快捷键
  • 应交所得税的计算公式excel
  • 劳保用品做账分录
  • PHP:oci_password_change()的用法_Oracle函数
  • opera software
  • 工业制品买卖
  • 企业破产是不是要没收法人家里全部财产
  • php代码大全及其含义
  • 高新企业技术服务成本核算
  • phpcms怎么样
  • 公司负担个人所得税如何做账
  • spring 门面模式
  • 公司注销后如何追缴税款
  • 技术开发费免税政策
  • 应付账款贷方余额怎么处理
  • 政府会计财务报表有哪些
  • 短期投资计提跌价准备
  • 投资者控股性质
  • PostgreSQL教程(十八):客户端命令(2)
  • 下列项目的进项税额可以从销项税额中抵扣的是()
  • 收到法人投资款需要什么手续
  • 以前年度损益调整属于哪类科目
  • 工会经费计提比例0.8%
  • 行政事业单位银行开户规定
  • 个体工商户不经营需要税务登记吗
  • 预付款项怎么做分录
  • 有支出没有发票应怎么整改
  • 食品企业产品
  • 汽车属于固定资产类吗
  • 融资租赁承租方怎么做账
  • 发票入账的时候能作废吗
  • 公益性捐赠要确认递延吗
  • 人工费用和管理费用比例
  • 什么是稳岗补贴有多少
  • 分公司费用报销
  • 个人所得税会计分录怎么做
  • mysql Access denied for user ‘root’@’localhost’ (using password: YES)解决方法
  • sql字段转首字母大写
  • ubuntu卸载ubuntu-desktop
  • fedora7
  • ctrmon.exe
  • Centos 5.5 php5.1.2升级到php5.2.6的方法
  • c1.exe是什么
  • win11连接win7共享打印机
  • win10系统怎么设置电脑密码
  • win7怎么下到u盘
  • 90后的毕业照
  • win7安装要求配置
  • 基于javascript的毕业设计选题
  • jquery插件使用教程
  • pm2启动nodejs
  • shell脚本中调用shell脚本
  • python并发原理
  • js跨域访问页面控件
  • 卷烟批发环节的税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设