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

  • 居民个人取得境内、境外所得,如何计算应纳税额?
  • 建筑公司预收了款项已经开了增值税发票怎么做账
  • 短期借款明细账应采用三栏式账页格式
  • 聘用退休员工
  • 二手车买卖如何交税
  • 公司代扣社保为什么是400多余的钱
  • 受委托加工物资双方账务处理怎么做
  • 企业之间现金换承兑合法吗
  • 代理手续费税收分类编码
  • 买粽子会计怎么做账
  • 预缴税款的附加税可以抵扣吗
  • 装卸增值税税率最新的
  • 工程发票需要进项吗
  • 企业取得的土地使用权应作为固定资产核算
  • 期望值E(X)怎么算例题
  • 外币借款利息汇兑差额计算公式
  • 有限合伙人的投资风险有哪些
  • 一键ghost有用吗
  • 如何更改应用商店
  • 网络不通怎么办苹果手机
  • 网速变慢了
  • php字符串赋值
  • 废旧物资销售收入
  • 建筑业的账务处理办法
  • 若依管理系统前端代码分析
  • php sendmail
  • vue绑定css样式
  • 蛇形矩阵找数的位置
  • 资产负债表中各项目的期末数应根据各账户
  • 外贸行业税率
  • 递延所得税资产借贷方向
  • yolo算法python代码
  • 房地产企业预缴增值税如何申报
  • node更新到最新版本
  • yolov5 libtorch
  • kill命令机制
  • PHP HTTP 认证实例详解
  • linuxroot切换
  • 代理返点怎么算
  • 发票内容类型怎么填
  • python中myqr的用法
  • mongodb视频教程
  • 将房产以股权形式出售
  • 运输发票怎么做账
  • 在建工程过程中取得收入怎么入账
  • 财务负责人需要承担什么风险
  • 商业一般纳税人辅导期截止时间
  • 纳税申报表期末未缴税额什么意思
  • 劳务外包合同需要注意什么
  • 消费税纳税人的具体纳税期限由主管税务机关
  • 销售退回所得税怎么做账
  • 企业接受捐赠如何确认收入
  • 发放股票股利的意义包括
  • 其它权益工具投资和其他债权投资
  • 公司购买的财产保险要交印花税吗
  • 场地租赁都需要交什么税
  • 汇兑损益分录如何写
  • 冲销应付账款暂估应付账款的分录怎么做
  • freebsd安装教程
  • gamebar.exe是什么进程
  • 如何设置让自己手机号处于关机状态
  • 手机ssh远程连接服务器
  • 怎么看win8还是win10
  • linux中快捷键
  • windows7输入
  • win10恢复到win7系统
  • 关于extjs4如何获取grid修改后的数据的问题
  • js 异步队列
  • Node.js中的construct构造函数
  • 浏览图片的软件叫什么
  • Jquery通过ajax请求NodeJS返回json数据实例
  • javascriptj
  • unity3d unreal
  • javascript面向对象编程指南 pdf
  • 小规模纳税人收到增值税专用发票怎么办
  • 什么是跨地区经营汇总纳税企业
  • 税务局要求补上年房租开票
  • 为何新能源汽车在东北推广不佳
  • 山东省国家税务局官网
  • 物流运输公司进项有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设