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

torch.multiprocessing 向Process传递对象参数报错 Can‘t pickle local object

如下代码所示,使用torch.multiprocessing启动多进程,并传递了model和image_processor两个对象作为参数。

from torch.multiprocessing import Process, Queue, Manager

...

p3 = Process(target=frame_memory_manager,
                     args=(model, image_processor, frame_queue, log_queue))
processes.append(p3)
p3.start()

运行后报错"Can’t pickle local object",

AttributeError: Can't pickle local object 'add_hook_to_module.<locals>.new_forward'

解决办法是在创建进程前调用:

multiprocessing.set_start_method('fork', force=True)

如果是第一次调用set_start_method,可以去掉force=True

本文只负责解决直接问题,假如这样改后导致了新的error,就需要重新检查。比如CUDA模型需要spawn模式才能传递模型参数。


http://www.kler.cn/a/442103.html

相关文章:

  • TextButton组件的功能与用法
  • 【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格
  • Redis的安装和使用--Windows系统
  • 如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
  • Word2Vec中的CBOW模型训练原理详细解析
  • 使用 Thermal Desktop 进行航天器热分析
  • 【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询
  • 研华运动控制卡 (如PCI1245)单轴编辑路
  • Linux-设备树
  • IDEA 使用 Gradle 强制清除缓存,更新快照
  • MySQL学习之DDL操作
  • xlsx预览
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • LSTM长短期记忆网络
  • QNX系统和android系统文件互拷贝
  • 《两道有趣的编程题解析与解法》
  • Spring 不推荐使用@Autowired
  • LeetCode5. 最长回文子串(2024冬季每日一题 35)
  • 在微服务架构中,处理日志的中间件和工具非常重要,它们帮助开发者收集、存储、分析和监控日志数据。一些常用的日志处理中间件及其特点、优缺点介绍。
  • 计算机网络信息系统安全问题及解决策略
  • 在优化算法中常见哪些数学函数(根据数学性质分类)
  • 用python实现滑雪小游戏,附源码
  • CSS 核心属性详解
  • 联邦学习:披着隐私外衣的“纸老虎“?
  • docker搭建Redis集群及哨兵(windows10环境,OSS Cluster)
  • 预处理内容