| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> multiprocessing多进程和subprocess子进程总结 -> 正文阅读 |
|
[开发测试]multiprocessing多进程和subprocess子进程总结 |
目录0. 什么是进程、线程简述: 1. Python中的多线程/进程(我们所熟知的)多进程/线程和多核CPU的关系
(Python中的)多线程/进程和多核CPU的关系
2. Python程序中多进程的用处?可以为程序提速程序拆分成N个子任务,利用多进程实现N个子任务的并行执行,从而缩短总运行时长。
可以为程序调用外部命令程序启动子进程,子进程用来执行外部命令,程序等待外部命令执行完成后再继续运行。
3. 多进程模块multiprocessing的使用multiprocessing是Python的多进程模块。 常用的
代码例子:启动10个子进程,并打印每个子进程的id号
如上3种方法是等价的。 注释1-4说明:
Windows和Linux的 Windows不能os.fork(),因此是在子程序中重新运行一遍主进程的程序,相当于import;Linux可以os.fork(),因此是把主进程的变量直接copy一份来用的。 4. 子进程模块subprocess的使用subprocess是Python的子进程管理模块。
代码例子:执行外部程序xxx.py
注释1-3说明:
5. 模型训练/推理时,怎么拆分多进程子任务?如果遇到Pool()执行时间比较长,多进程提速不明显的情况如何解决? 首先分析Pool多进程的主要耗时点:
拆分原则1:为了提速,多进程之间,共享变量/内存要尽可能少。 如调用Process()或Pool().apply_async()启动多进程时,data_loader要放在各个进程内部,而不是让多个进程去调用一个共享的data_loader(某一进程读取dataloader的同时将其阻塞,导致进程间相互竞争,无法同时访问资源,因此进程总要等待前一个进程读取完一个batch的数据后,再读取下一个batch数据,很慢)。 拆分原则2:进程数分配适当,单个进程的CPU计算时间不能过短。 如果每个进程只推理1条数据,总体提速不大。因为multiprocessing每次为进程分配任务都会底层调用os.fork()需要时间开销,进程的切换也存在时间开销。 ReferenceStore output of subprocess.Popen call in a string Multiprocessing pool slower than just using ordinary functions |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:43:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |