在使用onnx模型进行python的多进程推理的时候,遇到这个报错。搞明白报错原因之后,这里给出一个解决办法
使用python多进程进行ONNX和torch模型的的推理时候,习惯性把初始化构建推理引擎,初始化模型这个操作放在主进程,一般来讲都是这样做的,子进程只负责推理。在设置为multiprocessing.set_start_method(‘spawn’),torch可以正常多进程推理。onnx这样的话

import onnxruntime as rt
from multiprocessing import Process
multiprocessing.set_start_method('spawn')
def infer_process(sess,arg):pass
sess = rt.InferenceSession("./mine.onnx")
p1 = Process(target=infer_process,args=(sess,args1,))

是会报错"can’t pickle onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession objects"。这是因为python的多进程在multiprocessing .Process在传参时需要用pickle对参数进行序列化操作,但是onnx的推理引擎不在可序列化类型中,属于复杂类型,但是pytorch的model是可以。这时候需要把onnx模型的推理引擎构建放到子进程中。类似的can’t pickle等错误,我猜测也是这个原因。
但这样就相当于每次都额外增加耗时。自己这边采用使用队列的方式,把这个子进程中的初始化onnx引擎放在while循环的外面,然后再循环内读取队列。

报错“can‘t pickle onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession objects“问题解决相关推荐

  1. onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOB

    加载onnx模型报错: onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : IN ...

  2. Pickle库使用练习报错 AttributeError: module 'pickle' has no attribute 'dump'

    在这里插入代码片在练习使用pickle模块的时候写了如下的代码,但是出现了报错,代码和报错内容如下: 代码: import pickle dict1 = dict(name='八岐大蛇', age=1 ...

  3. pytorch 34 mmdeploy模型转换报错onnxruntime.capi.onnxruntime_pybind11_state.Fail解决方案

    使用mmdeploy部署mmrotate模型时出现以下报错,虽然不影响模型转换为onnx,但是影响模型的加载.出现这个报错,是因为mmdeploy转换完模型后,要加载onnx模型测试一下,但是onnx ...

  4. 解决python读取pickle报错ValueError: unsupported pickle protocol: 5

    解决方法 换一个python3.8+的版本读取pkl文件的数据 保存为其他格式或低版本的pkl,保存时设置protocol关键字即可 问题解析 这是因为保存为.pkl文件时使用的协议号为5(pytho ...

  5. 【Java报错】Greenplum数据库报错 could not determine data type of parameter $2. 问题解决(踩坑分享)

    1. 问题说明 先查看一下报错信息: Error updating database. Cause: java.sql.SQLSyntaxErrorException: [Pivotal][Green ...

  6. eclipse启动不了并报错Java was started but exit with code 13 问题解决

    我的eclipse之前运行的非常好但是突然就打不开了,并且显示如下报错 第一行告诉我们Java已经运行了,但是返回了错误代码为13的错误,也不知道13表示什么错误.下面的一行应该是打开Eclipse需 ...

  7. python3报错: takes 1 positional argument but 2 were given 问题解决。

    使用python3的时候,刚开始使用,把所有的都写在了一个文件中,这不符合类的六大设计原则.就把原来的代码按照类进行了拆分. 关于类的六大设计原则:开放关闭原则,里氏替换原则,依赖倒转原则,接口隔离原 ...

  8. 【Python】报错:ValueError: attempted relative import beyond top-level package问题解决

    报错: 解决办法:在导入模板的文件里添加 import sys sys.path.append("..")

  9. Python pytest main.py文件报错main.py: error: unrecognized arguments: --html=./test_report.html问题解决

    ERROR: usage: main.py [options] [file_or_dir] [file_or_dir] [...] main.py: error: unrecognized argum ...

最新文章

  1. golang 关闭制定名称的 tomcat_Tomcat原理详解及请求过程
  2. 如何用python画圆形的代码-python – 如何快速绘制数千个圆圈?
  3. 物理主机安装linux的方法
  4. UNIX再学习 -- 用户 ID 和组 ID
  5. python将变量i的值增加1_Python中变量自增、i+=x与i=i+x、is与==
  6. HDU4454(几何+三分)
  7. php如何在某个时间上加一天?一小时? 时间加减(转)
  8. wps合并所有sheet页_表格高级筛选、表格合并,让表格处理事半功倍
  9. 乔春洋:品牌管理创新
  10. 本地在线安装mysql_本地安装MySql服务
  11. 构建第一个Spring Boot2.0应用之集成dubbo上---环境搭建(九)
  12. mpvue 微信小程序设置背景音乐
  13. Android开源库集合(控件)
  14. 20154319 实验七 网络诈骗技术防范
  15. kindle上网看其他网址_原来kindle不止可以看书,快来看看体验版浏览器怎么玩!...
  16. 工业互联网发展行动计划(2018-2020年)
  17. 兼容Android11的手机拍照上传图片和相册选择图片功能(可直接用)
  18. 我对于测试团队建设的意见
  19. 基于DM6467的TVP7002 Linux驱动程序开发
  20. 单片机硬件电路设计实例分析

热门文章

  1. (一)caffenet 训练自己的数据集
  2. 知识蒸馏是什么?(Knowledge Distillation)KD
  3. C++中__int64用法
  4. 织梦cms多图发布功能
  5. UC浏览器的研测过程
  6. 线性筛与欧拉函数、莫比乌斯函数
  7. JAVAEE框架技术之15SSM综合案例 订单管理查询
  8. 字符识别系统仿真–Matlab GUI实现
  9. 偶数科技:基于OushuDB的新一代云原生湖仓一体为企业助力
  10. 每日一练:鬼画符门之大师兄恋爱