简介:这系列第一篇中讲了多线程和多进程的适用范围,写这篇的原因是遇到了进程池嵌套进程池的问题。(情况:我写的代码中使用了进程池,其中一个进程调用它他人写的使用进程池的函数。表现:他的函数直接跳过没有任何报错,最终定位到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使用加快训练和推理速度(二)相关推荐

  1. float32精度_混合精度对模型训练和推理的影响

    单精度/双精度/半精度/混合精度 计算机使用0/1来标识信息,每个0或每个1代表一个bit.信息一般会以下面的三种形式表示: 1 字符串 字符串的最小单元是char,每个char占8个bit,也就是1 ...

  2. MATLAB强化学习实战(一) 强化学习智能体训练总览

    强化学习智能体训练总览 简介 训练算法 情节管理器 保存候选智能体 并行计算 GPU加速 验证训练后的策略 环境验证 简介 创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体. 要配置您 ...

  3. 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络

    使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...

  4. Pytorch实现中药材(中草药)分类识别(含训练代码和数据集)

    Pytorch实现中药材(中草药)分类识别(含训练代码和数据集) 目录 Pytorch实现中药材(中草药)分类识别(含训练代码和数据集) 1. 前言 2. 中药材(中草药)数据集说明 (1)中药材(中 ...

  5. torch.cuda.amp自动混合精度训练 —— 节省显存并加快推理速度

    torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 文章目录 torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 1.什么是amp? 2.为什么需要自动 ...

  6. 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型(附链接)

    来源:机器之心 本文约800字,建议阅读5分钟. 本文介绍了官方教程入门PyTorch的技巧训练. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框 ...

  7. PyTorch框架学习一——PyTorch的安装(CPU版本)

    PyTorch框架学习一--PyTorch的安装(CPU版本) PyTorch简介 PyTorch的安装(CPU版) 机器学习/深度学习领域的学习都是需要理论和实践相结合的,而它们的实践都需要借助于一 ...

  8. 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自机器之心. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框架.想发论文,不学 PyTor ...

  9. conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

    conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决] 一.问题描述 二.网上解决方案罗列[此节为反面方案罗列!!!] 三.发现的根本原因[独家] 3.1 pytorch文 ...

最新文章

  1. Programming in Scala (Second Edition) 读书笔记12 Trais
  2. 浅析企业网站建设的基本费用组成
  3. unmappable character for encoding UTF8
  4. 2015年12月书单推荐
  5. html怎么设置页面自适应屏幕大小,网页设计设置页面自适应屏幕宽度
  6. nginx 如何实现读写限流的方法
  7. 最全面的关于LINUX与UNIX下的dd命令详解
  8. cisco2960开启snmp
  9. linux常用压缩/解压命令
  10. 【ADO.NET】7、SQL高级封装
  11. 上海海事大学c语言题库,上海海事大学,C语言试卷6
  12. MATLAB/simulink_S函数
  13. cf 684D - Traps
  14. iOS PNG和JPG的区别
  15. PHP支付宝手机网站支付notify异步通知
  16. 在线抢购平台_项目预览
  17. TX2入门(10)——TensorRT(1)(tx2端inference)
  18. strlen函数题目
  19. css情景动画,CSS3 白天/黑夜场景轮回动画
  20. PP-ShiTu: A Practical Lightweight Image Recognition System

热门文章

  1. 抓包分析360浏览器和360搜索配对使用的安全性-WEB服务端分析
  2. android游戏开发框架libgdx的使用(十五)—TWL布局
  3. Cocos2d-x移植Android 常见问题处理办法
  4. Layui导航、面包屑
  5. Mysql for Linux安装配置之——二进制安装
  6. php获取对象属性值
  7. 文件读写'r'和'rb'区别
  8. 探秘Spring AOP(上)
  9. Spring @Autowired注解在非Controller注入为null,Springboot @Reference注入为null解决方案
  10. 浅谈软件测试人员不要这样写测试用例(给测试新手和老鸟的提示)