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

  • 稽查局和税务局的关系
  • 缴纳个人所得税会计分录怎么写
  • 合同解除的效力民法典
  • 待处理财产损益借方
  • 高新技术认定标准条件是什么
  • 非营利组织免税资格怎么认定
  • 利息收入为什么不能在贷方
  • 股本与注册资本实收资本的区别
  • 土地股权转让需交什么税
  • 领用自产应税消费品负担的消费税计入在建工程成本吗
  • 研发费用是否包括增值税
  • 代别的公司付款怎么做账
  • 补交税金怎么做账
  • 投入的资金计入什么科目
  • 补缴以前年度养老保险能否税前扣除
  • 承包费收入计入什么科目
  • 企业收到税务局退税分录
  • 一次性医保补助多少钱
  • 代收水电费如何开票商品分类编码
  • 幼儿园开学费发票内容
  • 一张记账凭证写不下时,附件怎么写
  • 交叉持股的合并财务报表
  • 支付设备定金会退回吗
  • 已认证的发票对公司影响
  • 增值税专用发票的税率是多少啊
  • 车间工人工资计入
  • 档案保管期限是写汉字吗?
  • 电脑怎么纯净启动
  • window10总是自动开机
  • win10通知怎么打开
  • 预售卡怎么做会计分录
  • vue前端代码实例
  • 经营出租的机器设备需要计提折旧吗
  • 企业设立的条件有哪些
  • 外商投资的企业再投资
  • php 提交表单
  • zendstudio怎么创建php项目
  • java面试题及答案下载
  • python 元类 详解
  • mysqldump导入数据库
  • 企业的留存收益有
  • 工商年检截止日期
  • sqlserver2008触发器语法
  • 人力资源劳务外包需要什么资质证书
  • 现金及现金等价物包括哪些科目
  • 股东权益是资产吗
  • 如何进行捐款活动
  • 新会计准则印花税规定
  • 增值税代扣代缴范围
  • 开1000的增值税发票要交多少税
  • 发票失控成本怎么算
  • 以非货币形式出资应办理什么手续
  • 法定节假日报税顺延几天
  • mysql在指定字段前添加
  • windows installation disc
  • win8更新win8.1
  • winxp u盘拒绝访问
  • win7怎样关闭u盘保护功能
  • mac安装mysql详细教程
  • centos内存占用进程
  • centos6.5 minimal
  • 用U盘安装系统重启后进不去
  • linux安装php7.3
  • linux device driver
  • win7系统英雄联盟黑屏
  • freebsd连接wifi
  • vs2012配置opencv4.8
  • 安卓 游戏软件
  • linux用c语言实现命令功能
  • 音频焦点图广告
  • node调试工具
  • 对xmlHttp对象方法和属性的理解
  • jquery设置内容
  • javascript教程
  • 广西地方税务局决算公开表
  • 广东怎么交农村合作医疗保险
  • 地税局科员干什么的
  • 非居民企业所得税税率
  • 发票号码应与哪个号码一致
  • 国家税务总局中山市税务局港口税务分局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设