OpenCV中使用多线程和多进程读写数据的一些忠告:
1.关于多进程:
在读取多个摄像头时,可以使用多进程,每个摄像头开辟一个进程,使用队列进行进程间通信
2.关于多线程:
在写入视频的时候,使用多线程写,可以每个队列开一个线程,避免不必要的报错,具体原因,自己悟~
3.关于并行推理:
使用多线程进行推理,模型提前加载到不同的GPU上,或许可以考虑使用多进程,你可以试试,不一定能行,我是没成功。你想使用DDP或者DP的方式加载模型进行推理,实现了记得回来踢我一下,我学习一下
4.关于显存溢出
模型本来不大,但是使用多进程开摄像头,开了几次发现显存溢出?显存溢出搞不了,杀死进程跑不了!
我一般都是手动杀,当然也可以用脚本杀,手杀也没啥问题,多点工作量(累~)方法是新建终端,输入(确保你的服务器没有其他任务在运行):
fuser /dev/nvidia*
然后终端会出现你显卡上的进程(不确定是不是,不敢乱说)?上面会有很多PID,然后一个一个的手动kill掉就行,
比如:
kill 9527
字字都是经验总结,原创不易,评论区留言!
Over~