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

  • 个人所得税查询工资与实际工资不符是为何
  • 应付职工薪酬和工资总额的区别
  • 人工费用分配表分配率
  • 折旧费属于什么科目
  • 小微企业增值税起征点是多少
  • 销售人员购买的产品
  • 工会经费应税项怎么算
  • 普通发票作废要本人去拿吗
  • 暂时没开发票的销项税需要做账吗
  • 工资结算汇总表会计科目
  • 个人厂房租赁税率是多少
  • 公司支付保险公司保费怎么做账
  • 个人投资理财需要注意什么
  • 个人所得税0申报操作流程
  • 企业所得税怎么征收
  • 建设工程施工包括哪些工程
  • 小微企业减半征收印花税代码
  • 小规模纳税人纳税申报时间
  • 简易征收工程款可以抵扣吗?
  • 未确认融资费用摊销额怎么计算
  • 金税盘怎么做账务处理
  • win10锁屏界面windows聚焦什么意思
  • 收到银行承兑汇票后,如何取钱
  • 其他所得是什么意思
  • 增值税电子发票有什么用
  • 怎么用老毛桃u盘装win7系统 老毛桃u盘装win7系统教程图解
  • 电脑机箱前面耳机的WIN10系统没有声音怎么办
  • php ftell
  • 橡皮树的扦插方法和注意事项
  • 发财树怎么养护与浇水
  • echarts右侧y轴
  • php调用图片
  • 应付现金股利通过
  • php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
  • thinkphp excel
  • pytorch train()
  • php 微信公众号
  • 反斜杠python
  • 网页视频不显示画面
  • dedecms更新
  • 金蝶k3固定资产如何入账
  • 非流动资产处置计入什么科目
  • 工资表中可以出现减号的情况吗
  • 可变现净值属于会计计量属性吗
  • 工程物资进项税额转出
  • 土地增值税的计算方法公式
  • 弥补以前年度亏损怎么算
  • 当月进项税大于销项税怎么办
  • 公司借个人款利息产生个人所得税公司可以承担吗
  • 跨年租金如何处理
  • 汇算清缴怎么弥补亏损怎么操作
  • 银行取备用金最多能取多少
  • 社保调低,上半年多缴的怎么办
  • 施工单位购买材料能直接进成本吗
  • 新公司现金日记账怎么记账的
  • 企业预付账款是什么意思
  • 一个基于口令的用户身份认证基本过程是怎样的?
  • Linux下卸载MySQL数据库
  • sql server自动生成id
  • windows modules installer占用磁盘高
  • win7传真和扫描
  • 双硬盘无法进入bios
  • win8应用商店废了
  • 没有系统盘怎么修复系统
  • xp启动时间长
  • 清理macbook清除系统垃圾
  • 微软被告
  • win7安装office2016报错
  • Linux下将Mysql和Apache加入到系统服务里的方法
  • windows7开机显示错误恢复进不去
  • win7能用多屏协同吗
  • 飞车超人助手官网
  • about ContentProvider
  • python的web框架
  • javascript面向对象 第三方类库
  • 工会的会费收入是什么意思
  • 重庆市低保查询电话
  • 智能财税证书含金量如何
  • 福建税务局电子税务局电话多少
  • 代理记账协会成立时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设