Pytorch 尝试通过强化cpu使用加快训练和推理速度(二)
简介:这系列第一篇中讲了多线程和多进程的适用范围,写这篇的原因是遇到了进程池嵌套进程池的问题。(情况:我写的代码中使用了进程池,其中一个进程调用它他人写的使用进程池的函数。表现:他的函数直接跳过没有任何报错,最终定位到pool=Pool(x)。)
1. 先举个进程池嵌套进程池的代码例子.(参考后续文献)
import multiprocessing
import multiprocessing.pool
import timefrom random import randintdef sleepawhile(t):print("Sleeping %i seconds..." % t)time.sleep(t)return tdef work(num_procs):print("Creating %i (daemon) workers and jobs in child." % num_procs)pool = multiprocessing.Pool(num_procs)result = pool.map(sleepawhile,[randint(1, 5) for x in range(num_procs)])pool.close()pool.join()return resultdef test():print("Creating 5 (non-daemon) workers and jobs in main process.")pool = multiprocessing.Pool(5)result = pool.map(work, [randint(1, 5) for x in range(5)])pool.close()pool.join()print(result)if __name__ == '__main__':test()
运行后报错如下:
AssertionError: daemonic processes are not allowed to have children
修改后如下代码就不报错了(python3.8,不通版本改法可能不同详见参考链接):
import multiprocessing
import multiprocessing.pool
import timefrom random import randint
class NonDaemonPool(multiprocessing.pool.Pool):def Process(self, *args, **kwds):proc = super(NonDaemonPool, self).Process(*args, **kwds)class NonDaemonProcess(proc.__class__):"""Monkey-patch process to ensure it is never daemonized"""@propertydef daemon(self):return False@daemon.setterdef daemon(self, val):passproc.__class__ = NonDaemonProcessreturn procdef sleepawhile(t):print("Sleeping %i seconds..." % t)time.sleep(t)return tdef work(num_procs):print("Creating %i (daemon) workers and jobs in child." % num_procs)pool = multiprocessing.Pool(num_procs)result = pool.map(sleepawhile,[randint(1, 5) for x in range(num_procs)])pool.close()pool.join()return resultdef test():print("Creating 5 (non-daemon) workers and jobs in main process.")pool = NonDaemonPool(5)result = pool.map(work, [randint(1, 5) for x in range(5)])pool.close()pool.join()print(result)if __name__ == '__main__':test()
参考:https://stackoverflow.com/questions/17223301/python-multiprocessing-is-it-possible-to-have-a-pool-inside-of-a-pool,https://stackoverflow.com/questions/6974695/python-process-pool-non-daemonic/8963618#8963618,https://www.cnpython.com/qa/262520
Pytorch 尝试通过强化cpu使用加快训练和推理速度(二)相关推荐
- float32精度_混合精度对模型训练和推理的影响
单精度/双精度/半精度/混合精度 计算机使用0/1来标识信息,每个0或每个1代表一个bit.信息一般会以下面的三种形式表示: 1 字符串 字符串的最小单元是char,每个char占8个bit,也就是1 ...
- MATLAB强化学习实战(一) 强化学习智能体训练总览
强化学习智能体训练总览 简介 训练算法 情节管理器 保存候选智能体 并行计算 GPU加速 验证训练后的策略 环境验证 简介 创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体. 要配置您 ...
- 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络
使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...
- Pytorch实现中药材(中草药)分类识别(含训练代码和数据集)
Pytorch实现中药材(中草药)分类识别(含训练代码和数据集) 目录 Pytorch实现中药材(中草药)分类识别(含训练代码和数据集) 1. 前言 2. 中药材(中草药)数据集说明 (1)中药材(中 ...
- torch.cuda.amp自动混合精度训练 —— 节省显存并加快推理速度
torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 文章目录 torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 1.什么是amp? 2.为什么需要自动 ...
- 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型(附链接)
来源:机器之心 本文约800字,建议阅读5分钟. 本文介绍了官方教程入门PyTorch的技巧训练. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框 ...
- PyTorch框架学习一——PyTorch的安装(CPU版本)
PyTorch框架学习一--PyTorch的安装(CPU版本) PyTorch简介 PyTorch的安装(CPU版) 机器学习/深度学习领域的学习都是需要理论和实践相结合的,而它们的实践都需要借助于一 ...
- 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型
点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自机器之心. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框架.想发论文,不学 PyTor ...
- conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]
conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决] 一.问题描述 二.网上解决方案罗列[此节为反面方案罗列!!!] 三.发现的根本原因[独家] 3.1 pytorch文 ...
最新文章
- Programming in Scala (Second Edition) 读书笔记12 Trais
- 浅析企业网站建设的基本费用组成
- unmappable character for encoding UTF8
- 2015年12月书单推荐
- html怎么设置页面自适应屏幕大小,网页设计设置页面自适应屏幕宽度
- nginx 如何实现读写限流的方法
- 最全面的关于LINUX与UNIX下的dd命令详解
- cisco2960开启snmp
- linux常用压缩/解压命令
- 【ADO.NET】7、SQL高级封装
- 上海海事大学c语言题库,上海海事大学,C语言试卷6
- MATLAB/simulink_S函数
- cf 684D - Traps
- iOS PNG和JPG的区别
- PHP支付宝手机网站支付notify异步通知
- 在线抢购平台_项目预览
- TX2入门(10)——TensorRT(1)(tx2端inference)
- strlen函数题目
- css情景动画,CSS3 白天/黑夜场景轮回动画
- PP-ShiTu: A Practical Lightweight Image Recognition System