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

  • 电子税务局能查到个税申报信息吗
  • 技术开发免征增值税吗
  • 新成立的公司残保金如何申报
  • 优惠政策所得税计算
  • 新办商贸企业是国企吗
  • 每月工资个税为零
  • 固定资产出售损失属于广义费用吗
  • 受赠房产转让可以免个税
  • 外商投资企业是中国企业吗
  • 土地增值税属于所得税类
  • 长期股权投资的交易费用计入哪里
  • 未开票确认收入分录怎么做
  • 报销单冲抵借支做账
  • 新会计准则适用企业
  • 记账凭证是否要记账
  • 简易计税核算方法有哪些
  • 广告公司需要交消费税吗
  • 其他综合收益的编码
  • 关联企业之间借款的处理
  • 联营商场如何交增值税?
  • 建筑服务安装费会计分录
  • 房地产企业预售收入作为业务招待费
  • 延期收款利息如何算
  • 农副产品的进项税额
  • 活动展开方式怎么写
  • 缴纳税款滞纳金计算方式
  • 打印机5b00错误解决
  • 加班餐费税前扣除问题
  • 电脑输入法无法输入中文怎么办
  • 慈善捐赠金额排行
  • 外企借款投资利息高吗
  • php和py
  • 可变现净值高于成本计入当期损益吗
  • nginx反向代理未知域名
  • yii框架教程
  • html该怎么学
  • 办公室装修费怎么入账
  • 劳动仲裁的调解款要扣税吗
  • php jsondecode
  • 深度学习的通道到底是什么?有什么用?(小白可看)
  • spring security功能
  • 视频制作发票属于什么经营范围
  • 小规模纳税人如何开专票
  • mysql一对多关系如何一次性查出来
  • 代扣代缴通用缴款书怎么打印
  • 地价计入房产原值文件解读
  • 工会经费绩效
  • 个税申报更正申报如何操作
  • 中秋福利做账
  • 无形资产多摊销怎么处理
  • 农产品税率2020年计算
  • 实收资本没有实缴,财务报表里面怎么写
  • 固定资产特点有
  • 以前年度损益调整怎么做账
  • 会计损益类科目有哪些,期末如何结转?
  • 母公司划拨土地给全资子公司需要上税吗?
  • 发票入账是借还是贷
  • 塑料行业税负率是多少
  • 营改增后工程项目计价规则也随之发生了改变对还是错
  • 买入返售金融资产 流动资产
  • 企业短期借款可以是个人吗
  • linux下apache、mysql、php安装配置详细笔记
  • mysql数据库随机取数据
  • windows xp系
  • ubuntu x
  • windows10下软件的app
  • windows 10预览版
  • 开机提示windows即将过期
  • window怎么开启自动更新
  • unity best fit
  • javascript的数据类型有哪些?
  • nodejs dgram
  • jQuery+Ajax实现限制查询间隔的方法
  • 长春购房契税税率
  • 税控盘监控信息写盘失败时钟校准
  • 北京朝阳区国家税务局
  • 国家税务局河北省税务局
  • 税务系统领发票
  • 上海市浦东新区人民医院
  • 电影失眠详细剧情
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设