当前位置: 首页 > 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.lryc.cn/news/443945.html

相关文章:

  • HashMap源码
  • 探索 Web Speech API:实现浏览器语音识别与合成
  • python基础题练习
  • 工业交换机如何保证数据的访问安全
  • jmeter得到的文档数据处理
  • 12- 【JavaWeb】校园快递管理系统-数据库建设
  • Windows本地连接远程服务器并创建新用户详细记录
  • 【kaggle竞赛】毒蘑菇的二元预测题目相关信息和思路求解代码
  • Pytest-allure如何在测试完成后自动生成完整报告?
  • 数据结构-树(基础,分类,遍历)
  • CodeGeeX4:程序员的高效助手,多语言代码生成神器!
  • 小程序组件间通信
  • Homebrew安装与切换下载源
  • C#回调函数
  • Matplotlib绘制热力图
  • 手写SpringMVC
  • mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(18)
  • 周边游小程序开发
  • 初级前端面试
  • 微软AI核电计划
  • 图片马赛克处理(Java)
  • python+selenium实现自动联网认证,并实现断网重连
  • 基于机器学习的注意力缺陷/多动障碍 (ADHD)(python论文+代码)HYPERAKTIV
  • Spring Boot 集成 Redisson 实现消息队列
  • go语言Map详解
  • C++——已知数组a[6]={1,3,5,7,9};输入一个数值,要求按照现有排序规律将它放入数组当中。
  • 云计算第四阶段---CLOUD Day7---Day8
  • 深入解析ThingsBoard与ThingsKit物联网平台的差异
  • 五、CAN总线
  • Linux:终端(terminal)与终端管理器(agetty)