Python标准库之subprocess

1. subprocess标准库简介

subprocess允许你生成新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码,代替一些老旧的模块与功能。

这里主要探讨一下如何通过该模块的函数替代os.system函数执行命令,首先导入

import subprocess 

2. subprocess常用类和函数

2.1 subprocess.run函数

本模块首先推荐使用run函数,一般用来执行各种命令,下面给出常见用法

def exec_cmd(command:str,timelimit=4):
    """
    执行命令行命令
    :param command: 待执行命令的字符串
    :param timelimit: 命令执行超时秒数
    :return: CompletedProcess实例
    """
    return subprocess.run(command,shell=True,stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE,encoding="utf-8",timeout=timelimit)
command="cat /etc/issue" # 待执行命令用于查看ubuntu版本
completed_process=exec_cmd(command)
print("执行命令获得的ubuntu版本标准输出结果为\n{}".format(completed_process.stdout))

在这里插入图片描述

command="cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c" # 查看CPU型号
completed_process=exec_cmd(command,timelimit=6) # 将超时秒数设置为6s,否则会超时错误
print("执行命令获得的CPU型号标准输出结果为\n{}".format(completed_process.stdout))

在这里插入图片描述

command="free -m" # 查看内存使用情况
completed_process=exec_cmd(command)
print("执行命令获得的内存使用情况标准输出结果为\n{}".format(completed_process.stdout))

在这里插入图片描述

command="nvidia-smi" # 查看显存使用情况
completed_process=exec_cmd(command)
print("执行命令获得的显存使用情况标准输出结果为\n{}".format(completed_process.stdout))

在这里插入图片描述

2.2 subprocess.Popen类

Popen 是 subprocess的核心,子进程的创建和管理都靠它处理,很多常用函数如run都是基于subprocess.Popen类实现的。不常见的功能可通过该类定制实现。具体用法请查阅官网文档

3.参考文献

猜你喜欢

转载自blog.csdn.net/m0_46223009/article/details/128073092