位置: IT常识 - 正文

深究Python中的asyncio库-线程池

发布时间:2024-01-20

推荐整理分享深究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使用手册)

  • 代扣代缴增值税是什么意思
  • 社保缴费基数怎么算出来的啊
  • 小规模企业可以收增值税专用发票吗
  • 房屋租赁账务处理程序
  • 出纳可以做库存库吗
  • 在网上怎么预约办健康证
  • 一般纳税人当月生效次月生效有什么区别
  • 索赔怎么开票
  • 债券折价发行的会计分录
  • 建筑服务预征缴纳税款本期实际抵减税额怎么填
  • 制造费用的借方和贷方各表示什么
  • 存货周转率多少好
  • 成本跨年如何处理
  • 固定资产后续支出的确认和处理
  • 研发加计扣除税率
  • 个体工商户如何给员工交社保
  • 股权变更印花税双方都要交吗
  • 七月一号出台的什么政策
  • 发票密码区出来了一点
  • 直接计入所有者权益的利得是
  • 企业筹办期多久
  • 建安企业结转成本如何计算
  • 原材料盘亏计入
  • 无法连接到移动网络小米
  • phpserialize
  • macbook panic cpu caller
  • 认缴资本 实收资本
  • 应交增值税的完整计算公式是什么
  • 基于thinkphp的学园招聘系统项目源代码
  • 房地产企业预缴增值税如何申报
  • 黄金期货交易进场规则
  • 同一控制下企业合并入账价值
  • 餐厅的餐具怎么摆
  • 教育经费地方出多少
  • 用php写的一个冒号的句子
  • 未开票收入如何申报
  • 新准则下公允价值变动损益纳税调整
  • 合并的命令
  • 企业所得税是填本年累计数吗
  • 特殊劳务交易的法律规定
  • 存货毁损计入什么科目
  • 不发工资可以先报警吗
  • 应付货款和应付款的区别
  • 个体户需要
  • 营业额和营业收入怎么算
  • 普通费用发票不入账会有什么后果吗
  • 单位或个体经营者
  • 员工退回备用金怎么写收据
  • 企业租厂房没有发票怎么做账
  • 所得税纳税调增会计需要做业务处理吗
  • 购买办公楼分期合同
  • 厂家返利怎么入账
  • 申报系统中印花税报表怎么填
  • 中央空调的维护费一年要多少钱?
  • 锅炉设备销售
  • 上年度多计提的附加税怎么办
  • 工业企业外购材料采购成本包括
  • mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
  • MySQL部署时提示Table mysql.plugin doesn’t exist的解决方法
  • mysql日期字段
  • win8.1输入法打不了中文
  • win8怎么彻底删除软件
  • 电脑xp系统虚拟内存不足怎么解决
  • win8怎么进入桌面系统
  • linux快速查看目录大小
  • win10微软更新
  • win7共享文件设置
  • win10 6个文件夹
  • font:inherit
  • javascript HTML5 Canvas实现圆盘抽奖功能
  • mysql 导出指定表
  • 用python做冒泡排序
  • vbs以管理员权限运行
  • unity3d spine
  • nodejs image
  • js浏览器运行机制
  • jquery单选框
  • 国家税务总局商洛市税务局
  • 公司欠税款,还不上,怎么办
  • 食堂增值服务有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号