当前位置: 首页 > news >正文

一次使用threading.Thread来实现Pytorch多个模型并发运行的失败案例

文章目录

      • 背景
      • 我的做法(但证明不起效果)

背景

我有多个pytorch GPU模型,他们有不同的参数(也就是说不是共享的),但是相同的数据输入,想要并发运行。

不并发运行,当然就是循环喽。

        for i in range(self.args.m):self.models[i](batch)

我想要并发,因为m有点大。像上面循环的话m=30以上速度就有点受不了了。我看过了,我的GPU还有很多空间,起码放上去10个模型没有问题。

我的做法(但证明不起效果)

我想到了多线程,如下:

class MyThread_forward(threading.Thread):  #自定义线程类def __init__(self, model,batch):threading.Thread.__init__(self)self.model = model              self.batch=batchdef run(self):                    self.result=self.model(self.batch) def get_result(self): return self.resultdef multi_thread_forward():threads=[]for  i in range(self.args.m):#创建多个线程threads.append(MyThread_forward(self.models[i],batch))for thread in threads:#各个线程开始并发运行。thread.start()for thread in threads:#等待各个线程运行完毕再执行下面代码。thread.join()    results= []for thread in threads:results.append(thread.get_result())  #每个线程返回结果(result)加入列表中return resultsmulti_thread_forward()#多线程运行。

结果就是不起效果好像,还是运行得很慢,咋回事捏。


http://www.mrgr.cn/news/33308.html

相关文章:

  • from sklearn.preprocessing import Imputer.处理缺失数据的工具
  • 关于Unity使用LookAt时为什么不能旋转
  • gitlab角色、权限
  • sql专题 之 where和join on
  • node.js安装和配置教程
  • STM32(hal库)在串口中,USART和uart有什么区别?
  • 罗德岛战记游戏源码(客户端+服务端+数据库+全套源码)游戏大小9.41G
  • 探秘 Web Bluetooth API:连接蓝牙设备的新利器
  • openEuler系统安装内网穿透工具实现其他设备公网环境远程ssh连接
  • GS-SLAM论文阅读笔记--TAMBRIDGE
  • Redis数据结构之list列表
  • 一款前后端分离CRM客户关系管理系统,支持客户,商机,线索,合同,发票,审核,商品等功能(附源码)
  • 基于redis的HyperLogLog数据结构实现的布隆过滤器在信息流中历史数据的应用
  • html 几行的空间分成3个区域
  • 【机器学习】--- 决策树与随机森林
  • Cisco 基础网络汇总
  • django+vue
  • MySQL高阶1917-Leetcodify好友推荐
  • [图解]静态关系和动态关系
  • 使用GPU 加速 Polars:高效解决大规模数据问题
  • js之遍历方法
  • 【多模态大模型】Qwen2-VL基本原理和推理部署实战
  • 为什么 AVIF 将成为下一代图片格式之王
  • 基于Python的自然语言处理系列(16):TorchText + CNN + Teacher Forcing
  • 照片EXIF数据统计与可视化
  • [数据结构与算法·C++] 笔记 1.5类与对象