首页 > 系统相关 >linux检测程序运行时间和内存峰值 Python脚本

linux检测程序运行时间和内存峰值 Python脚本

时间:2023-03-08 14:55:12浏览次数:49  
标签:linux sps 程序运行 start Python max sp mem time

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
import subprocess as sp
import sys
import time


def get_mem(pid):
    c = sp.Popen(['ps', '-aux'], stdout=sp.PIPE).stdout.read().decode().split('\n')
    for line in c:
        sps = [i for i in line.split(' ') if i]
        if len(sps) > 1 and pid == sps[1]:
            if 'Z' in sps[7]: return  # 子进程结束
            mm = sps[5]
            return int(mm)



cmd = sys.argv[1:]
max_mem = -1


p = sp.Popen(cmd, stdout=sp.PIPE)
pd = str(p.pid)
st = time.time()
# print(pd)

start_wait = 2 - 1

try:
    while True:
        cur_mem = get_mem(pd)
        if start_wait: start_wait -= 1
        if cur_mem is None:
            if not start_wait:
                raise KeyboardInterrupt  # 进程结束
            time.sleep(1)
            continue
        max_mem = max(max_mem, cur_mem)
        print('\rMax memory:'+str(round(max_mem/1024, 2))+' MB', end='')
        time.sleep(1)
except KeyboardInterrupt:
    print()
    # sp.Popen(['kill', pd])  # 防止中断后子进程仍然进行
    

print('用时:', str(round(time.time() - st, 2)), 's')

示例(bash):

# 保存为"mt"(意即memory time);先修改权限为可执行,方便后续调用
chmod 755 mt
# 运行
mt sleep 3

 

标签:linux,sps,程序运行,start,Python,max,sp,mem,time
From: https://www.cnblogs.com/roundfish/p/17191988.html

相关文章

  • Python学习笔记:str.zfill补全位数
    一、介绍zfill函数用于在字符串的开头添加零,直到达到指定的长度。如果len参数的值小于字符串的长度,则不执行填充。具体使用语法为:str.zfill(len)如果是整型、浮点......
  • python自动化基础-花样输出
    彩色输出程序deflog():w='\x1b[1;33;40m'+'内容'+'\x1b[0m'print(w)v='\033[0;32;40m'+'内容'+'\033[0m'print(v)if__name__=......
  • (总结三)Linux指令学习——逻辑卷管理
    文章目录​​1.LVM概述​​​​2.LVM的管理命令​​​​3.使用命令行工具实现LVM存储​​​​4.扩展逻辑卷和ext4文件系统​​​​5.减少逻辑卷和文件系统​​​​6.扩大和......
  • buildroot 制作linux文件系统,并添加telnet 、ssh
    //makemenuconfigbuildroot中选择如下软件包(主要是net-toolsiw工具包)Targetoptions--->TargetArchitecture(ARM(littleendian))--->......
  • Ubuntu 更换Python版本相关
    错误做法:卸载Python3Python是linux系统的底层应用,卸载Python3容易出现各种各样的问题。错误做法sudoaptremovepython3sudoaptautoremove遇到问题1:卸载了火狐浏......
  • python 提取csv文件内容遇到ufeff非法字符
    目录python提取csv文件内容遇到ufeff非法字符处理探测编码格式类型python提取csv文件内容遇到ufeff非法字符使用python3提取csv文件的时候,提取来的数据用set去重后发现......
  • python中的循环语句
    循环语句while循环​ 用于不固定次数的循环......
  • PyCharm入门级使用指南,Python开发必备!
    PyCharm是一个专业的PythonIDE,可以提供全面的Python开发支持,包括代码编辑、调试、测试、版本控制等功能。对于初学者来说,PyCharm可能会有点吓人,但是随着您的熟练使用,会发......
  • [Linux]常用命令之【diff】
    1概述2diff命令diff命令是Linux上比较重要的命令行工具,用于比较文本内容,并找到不相同的地方,diff在命令行中打印每一行的改动之处。diff程序的输出被称为补丁(pat......
  • How many web dev frameworks are there in Python?
    HowmanywebdevframeworksarethereinPython?TherearemanywebdevelopmentframeworksavailableinPython.Someofthepopularonesare:Django-......