位置: 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使用手册)

  • 代扣个人所得税怎么算
  • 视同销售是指什么
  • 注销公司详细步骤
  • 怎么报企业所得税季报
  • 加工费暂估入库的会计分录
  • 物业费免交条件
  • 增值税发票丢了怎么办?
  • 产成品入库金额和售价一样嘛
  • 小企业营业外支出
  • 企业没有收入怎么办
  • 房地产退房款会计分录
  • 员工借款后离职怎么办
  • 注册资本没有到账怎么做账
  • 房产税缴纳时间规定
  • 发票查询结果显示不出来
  • 房地产企业转让股权缴纳土地增值税
  • 防洪基金怎么做分录
  • 员工出差报销制度
  • 增值税附表一免税项目金额填不上
  • 非企业单位有税收吗
  • 企业进项发票如何做账
  • 旧房转让土地增值税核定
  • 工资个人所得税标准表
  • 因为质量问题
  • 销售不动产土地增值税纳税义务时间
  • vue3.0组件库
  • php可以和iis配合运行吗?
  • code ide
  • 工业企业制造费用核算范围
  • php错误级别有哪些
  • 应付账款账户的期初贷方余额100元
  • 筹建期间的费用计入长期待摊费用吗
  • 小规模纳税人会计分录
  • 收取职工交来伙食费如何入账
  • 顺流交易的会计处理
  • qrcode.min.js
  • 社保基数和实际工资怎么算
  • 基于YOLOv5的中式快餐店菜品识别系统
  • python 命令行参数解析
  • web前端期末大作业旅游页面
  • pdclient
  • python中的包有哪些
  • 注册资本与注册资金、出资额的区别
  • php 注入
  • 计提的坏账准备计入什么科目
  • 支付委托加工费的记账凭证
  • 帝国cms8.0版
  • 专项应付款 会计分录
  • mysql服务器硬件配置
  • sqlserver数据库版本号怎么查
  • 有限公司股东撤资退股
  • 住宿发票 抵扣
  • 发票开错作废如何处理?
  • 法院强制执行根本没用
  • 主营业务收入记多栏还是三栏
  • 银行手续费未取得发票可以进行税前扣除吗
  • 主营业务成本和管理费用的区别
  • 库存商品品种太多如何算成本
  • 开办费计入期间费用明细表
  • 发票认证是为了什么
  • 财务工作交接的通知
  • 专栏设计模板
  • mysql5.7主从配置
  • mysql 源码 下载
  • win10最新预览版下载
  • win10mobile下载官网
  • win8怎么彻底删除软件
  • 怎么从win8装回win7
  • 打开安全启动
  • win10系统如何去除记住密码
  • linux安全性从何而来
  • linux中内存是2GB,虚拟内存应该是多少
  • 铁嘴王指什么动物
  • jquery 随机函数
  • 10个常用linux指令
  • Node.js发送HTTP客户端请求并显示响应结果的方法示例
  • android重写方法
  • 用shell写一个脚本,对文本中无序的一列数字排序
  • jquery audio
  • 长沙房产税如何征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设