位置: IT常识 - 正文

深究Python中的asyncio库-线程池

编辑:rootadmin

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

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

在同步线程中使用的run_in_executor就如它方法的名字所示,把协程放到了一个执行器里面,可以在一个线程池,也可以在一个进程池。另外还可以使用run_coroutine_threadsafe在其他线程执行协程(这是线程安全的)。

多线程

defstart_loop(loop):asyncio.set_event_loop(loop)loop.run_forever()defshutdown(loop):loop.stop()asyncdefb1():new_loop=asyncio.new_event_loop()t=Thread(target=start_loop,args=(new_loop,))t.start()future=asyncio.run_coroutine_threadsafe(a(),new_loop)print(future)print(f'Result:{future.result(timeout=2)}')new_loop.call_soon_threadsafe(partial(shutdown,new_loop))In:awaitb1()<Futureat0x107edf4e0state=pending>Result:A深究Python中的asyncio库-线程池

这里面有几个细节要注意:

协程应该从另一个线程中调用,而非事件循环运行所在线程,所以用asyncio.new_event_loop()新建一个事件循环

在执行协程前要确保新创建的事件循环是运行着的,所以需要用start_loop之类的方式启动循环

接着就可以用asyncio.run_coroutine_threadsafe执行协程a了,它返回了一个Future对象

可以通过输出感受到future一开始是pending的,因为协程a里面会sleep 1秒才返回结果

用future.result(timeout=2)就可以获得结果,设置timeout的值要大于a协程执行时间,要不然会抛出TimeoutError

一开始我们创建的新的事件循环跑在一个线程里面,由于loop.run_forever会阻塞程序关闭,所以需要结束时杀掉线程,所以用call_soon_threadsafe回调函数shutdown去停止事件循环

本文链接地址:https://www.jiuchutong.com/zhishi/303139.html 转载请保留说明!

上一篇:帝国cms怎么备份(帝国cms怎么上传图片)

下一篇:使用FileZilla服务器FTP工具快速找回忘记的服务器密码傻瓜试教程-OK教程(filezilla使用手册)

  • 三税率什么意思
  • 个人可以申请代收货款吗
  • 计提附加税的金额怎么算
  • 手机上可以开个人劳务发票吗
  • 实收资本印花税怎么申报税目
  • 小规模印花税可以零申报吗
  • 预收账款负数重分类调整
  • 预销售符合退款条件的商品记什么分录
  • 支付境外软件服务怎么用
  • 个人兼职取得的收入和退休人员再任职取得的收入
  • 大病医疗专项附加扣除标准举例
  • 低价销售差额部分计入
  • 借款到期一直付利息诉讼期怎么算
  • 缴纳城建税会计分录怎么做账
  • 发票已认证还能作废吗2020
  • 权益净利率如何算
  • 员工工资可以计入在建工程吗
  • 没有订立合同的著作权属于什么人
  • 17增值税发票怎么计算
  • 本月有收入免增值税吗
  • 税控盘抵扣联附在哪里
  • 物业公司税务风险
  • 非营业活动交增值税吗
  • 期末未缴税额是负数用于抵扣如何填报
  • 快递公司怎么纳入社保
  • 创建上市公司
  • 一次性优惠税率表
  • 其他资本公积增加会计处理方法
  • 应收账款无法收回确认为坏账分录
  • 免征税收入和不征税收入的区别
  • 改变资金用途的说明
  • 公司成立后多久可以开发票
  • 承租厂房需要缴纳什么税
  • 计算所得税费用公式excel
  • php找零
  • 负数发票跨月怎么做账
  • 基于深度学习的自动调制识别(含代码链接)
  • javascript数据类型
  • 使用spring可以实现声明式事务吗
  • 会计中金额的正负怎么算
  • 信用减值损失和公允价值变动的区别
  • 企业缴纳员工社保会计分录
  • 以前年度多计提了费用
  • 企业流动资金的筹措应以财政拨款为主
  • 个税公司少申报一个月会对个人有什么影响
  • 服务行业进项税额加计扣除
  • 固定资产应计入什么账户
  • 小规模收的专票以后能抵扣吗
  • 预收账款借方和贷方表示什么
  • 定期存款怎么做
  • 购入固定资产一次性扣除政策
  • 期末留抵税额和上期留抵税额
  • 会计信息质量特征哪个最重要
  • 其他货币资金包含的内容
  • sql参数化是什么意思
  • XP系统无法安装软件
  • windos桌面
  • 注册表修改大全
  • win10的ubuntu
  • 构建dockerfile
  • windows磁盘如何分区
  • gnaupdaemon.exe是什么
  • win10的outlook在哪
  • unix怎么操作
  • win7系统电脑开不了机怎么办
  • div垂直居中怎么设置css
  • unity-3d
  • bootstrap按钮的风格有哪些?
  • 噩梦剧情
  • 分析天平
  • javascript definitive guide
  • pythoni脚本
  • javascript()
  • fragment切换保存状态
  • shell脚本运行linux命令
  • Python循环遍历的题
  • python中私有函数调用方法解密
  • 运输费用抵扣税率最新规定
  • 兴安盟县城
  • 盐城滨海人口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设