首页 > 编程语言 >使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的模型同时/并行进行训练)

使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的模型同时/并行进行训练)

时间:2024-09-24 08:52:35浏览次数:11  
标签:Python py helloworld subprocess python Pytorch 进程 执行

文章目录

话不多说了,直接看代码。

subprocess基础使用

假设我要运行一个名字叫helloworld.py的文件,在主程序如下运行即可。

主程序
import subprocess
p = subprocess.Popen(["python", "helloworld.py"])

相当于就是在执行,

python helloworld.py

所以,如果helloworld.py需要额外传入参数才能运行,可以在那个列表["python", "helloworld.py"]里继续添加。例如:

python helloworld.py --args 1

subprocess高级使用

上面这样执行另外一个python程序,其实我们并没有关心那个程序什么时候运行结束。

有的时候我们有这种需求:主程序需要等待helloworld.py运行结束才能往下运行,因为helloworld.py运行结束后会输出一些结果,这些结果是主程序需要的。

那该怎么做呢?使用wait

import subprocess
p = subprocess.Popen(["python", "helloworld.py"])
p.wait()
后面的程序

这样的话,后面的程序就会等待helloworld.py运行结束后再运行,没有wait的话后面的程序与helloworld.py并行运行。

subprocess多进程

上面只调用了一个外部文件执行,我们可以多调用几个,这几个程序是并行执行的!

Ps=[]
p1 = subprocess.Popen(["python", "helloworld.py"])
Ps.append(p1)
p2 = subprocess.Popen(["python", "helloworld2.py"])
Ps.append(p2)
for p in Ps:
    p.wait()
后面的程序

p1和p2这两个进程谁先执行完毕是未知的。使用wait之后,我们会等待这两个进程都执行完毕之后再执行主程序。

subprocess执行情况

执行子进程的过程中,有可能子进程报错了,那我们在主进程中怎么知道呢?查看进程的返回码即可。

p.returncode

返回码有以下几种情况:

0:执行完毕且没有报错。
非0:执行中报了错,停止了运行
None:还没有执行完毕。

在深度学习中的应用

上面开多个进程同时执行多个程序,这在深度学习里面可以对应到开多个进程对多个不同的模型同时训练。

有人说,这样的话,岂不是在多个进程里面,都要重复读取数据,然后模型训练?是的。

只在主进程里读取数据,然后传递数据作为一个参数给新开的各个进程,这个暂时不知道该怎么办。应该可以在主进程里面将数据写入文件,然后各个进程读取。除此之外,想不到更好的办法了,torch.multiprocessing试过了不行,可以看我之前文章。

标签:Python,py,helloworld,subprocess,python,Pytorch,进程,执行
From: https://blog.csdn.net/qq_43391414/article/details/142454930

相关文章

  • Python 入门教程(7)面向对象 | 7.2、成员变量
    文章目录一、成员变量1、成员变量的类型2、实例变量2.1、定义实例变量2.2、访问实例变量2.3、删除实例变量3、类变量3.1、定义类变量3.2、访问类变量3.3、修改类变量4、注意事项5、总结前言:在Python的面向对象编程(OOP)中,变量可以分为两大类:实例变量和类变量。这......
  • Python背记内容-2day
    Python运算符运算符描述[][:]下标,切片**指数~+-按位取反,正负号*/%//乘,除,模,整除+-加,减>><<右移,左移&按位与^|按位异或,按位或<=<>>=小于等于,小于,大于,大于等于==!=等于,不等于isisnot身份运算符innotin成......
  • Python可视化过程中.pictures.add这里一直报错,不明原因
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【沐子山树】问了一个Python可视化的问题,问题如下:importmatplotlib.pyplotasplt#创建一个简单的图表fig,ax=plt.subplots()ax.plot([1,2,3,4])ax.set_ylabel('somenumbers')#保存图表为PNG文件temp......
  • Python背记内容-1day
    变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。硬性规则:规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊......
  • Python——第三方库不能用
    1.问题描述通过pip安装第三方库成功后,在pycharm中在.py文件导入第三方库显示没有这个库。2.解决方法2.1.情况1检查是否在创建项目时开启了虚拟环境。若开启了虚拟环境,项目文件夹会出现如图文件夹:此时有两种方法解决。方法1.直接在Python安装目录中找到需要的库,复制粘贴......
  • Python数据库连接池dbutils详解
    简介在python开发中,如果需要连接MySQL数据库并进行数据操作,可以使用dbutils模块,dbutils是python的一个数据库工具库下载对应模块pipinstallpymysqlpipinstalldbutils连接池配置信息说明使用示例importpymysqlfrompymysql.cursorsimportDictCursorfr......
  • Python中的“打开与关闭文件”:从入门到精通
    引言在日常生活中,我们经常会遇到需要读取或保存信息的情况,比如记录笔记、保存配置信息或者处理大量的数据文件等。对于程序员来说,如何高效、安全地管理这些信息显得尤为重要。Python中的文件操作功能强大且易于使用,可以帮助我们轻松完成各种任务。本文将详细介绍Python中打开与关......
  • Python中的文件读取艺术:从新手到高手的全面指南
    引言读取文件是任何编程语言中最基本也是最重要的功能之一。在日常开发工作中,我们常常需要处理各种类型的文件,如文本文件、CSV文件、JSON文件等。Python作为一门简洁易学的语言,在处理文件方面提供了非常强大的工具。无论是简单的日志分析、数据清洗还是复杂的机器学习任务,都能通过......
  • 为什么网上Python爬虫教程这么多,但是做爬虫的这么少呢?
    专业的爬虫已经有搜索公司、数据公司在做了,像百度、搜狗、德勤等等,相关的程序员岗位也不少。但大多数场景下都只需要简单的爬虫,数据量小、难度低,这样简单的爬虫压根不需要专门的人才,不管用Python,还是用爬虫软件,在很短的时间里都能搞定。其实爬虫无外乎抓包工具、解析工具、HTM......
  • python爬虫案例——抓取链家租房信息
    文章目录1、任务目标2、分析网页3、编写代码1、任务目标目标站点:链家租房版块(https://bj.lianjia.com/zufang/)要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格如:2、分析网页用浏览器打开链接,按F12或右键检查,进入开发者模式;因......