计算程序的内存和占比

 1 #!/usr/bin/env python
 2 # _*_ coding:UTF-8 _*_
 3 # 收集程序所占用的物理内存大小,占所有物理内存的比例
 4 # OS: Centos 6.7  Python: 2.7.6
 5 # __author__:Dahlhin
 6
 7 import sys
 8 import os
 9 from subprocess import Popen,PIPE
10
11 def get_pid(program):
12     ‘获取目标程序的PID列表‘
13     p = Popen([‘pidof‘,program],stdout=PIPE,stderr=PIPE)
14     pids,stderrput = p.communicate()
15 #     pids = p.stdout.read()  #这种方法也是可以的
16 #     这里也可以对stderrput来进行判断
17     if pids:
18         return pids.split()
19     else:
20         raise ValueError
21
22 def mem_calc(pids):
23     ‘计算PIDs占用的内存大小‘
24     mem_total = 0
25     for pid in pids:
26         os.chdir(‘/proc/%s‘ % pid)
27         with open(‘status‘) as fd:
28             for line in fd:
29                 if line.startswith(‘VmRSS‘):
30                     mem = line.strip().split()[1]
31                     mem_total += int(mem)
32                     break
33     return mem_total
34
35
36 def mem_percent(mem):
37     ‘计算程序内存占用物理内存的百分比‘
38     with open(‘/proc/meminfo‘) as fd:
39         for line in fd:
40             if line.startswith(‘MemTotal‘):
41                 total = line.strip().split()[1]
42         percent = (float(mem)/int(total)) * 100
43     return percent
44
45
46 def main():
47     try:
48         program = sys.argv[1]
49         pids = get_pid(program)
50     except IndexError as e:
51         sys.exit(‘%s need a Program name ‘ % __file__)
52     except ValueError as e:
53         sys.exit(‘%s not a Process Name or not Start‘ % program )
54     mem_total = mem_calc(pids)
55     percent = mem_percent(mem_total)
56     return program,mem_total,percent
57
58 if __name__ == ‘__main__‘:
59     program,mem_total,mem_percent=main()
60     print(‘进程名称:%s\n物理内存为:%s\n百分比为:%.2f%%‘% (program,mem_total,mem_percent))
时间: 2024-10-13 06:22:22

计算程序的内存和占比的相关文章

linux 系统性能分析(top命令)及更准确解读内存的占用率(free -m 命令)

一.系统性能分析(top命令) top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器. 系统整体当下的统计信息 top命令显示的前五行是系统整体的统计信息. 第一行是任务队列信息,同uptime命令的执行结果.eg. top  -  15:09:51  up  17  days  ,  3:38  ,  4  users  ,  load  average  :  1.09  ,  3.39

一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK

一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位符号 s.这些字段连续存储在两个 32 位字中 二.一个中文String 在内存中占多少直接 utf-8 / GBK [腾讯实习生问到这个问题,当时还天真的回答unicode字符集和16位,哎...] GBK:1个ASCII码占1个字节,而1个汉字编码占2个字节. UTF:ASCII对应的字符在UT

清除list或者map集合,减少内存的占用率

1.在编写程序对数据处理的时候我们经常会使用到list和map集合,有些时候我们存到集合里的数据只是暂时性的,在验证完或者使用完之后尽量对list或者map清空,及list.clear()后者map.clear(), 这样我们可以大大减轻服务器内存被占用率,特别是处理数据量比较大的验证以及过滤的时候,对于程序的性能以及运行速度都是影响很大的. 2.程序中我们经常会遇见把数据存到excel中然后经过中间件进入数据库中,这样的数据需要经过一系列的验证到最后只是把正确的数据保存到数据库中,错误的直接过

查看 Linux 下 CPU、内存的占用率的方法集锦

如何查看 Linux 下内存占用率方法一 : 我们可以使用下面命令的组合来达到此目的.在该方法中,我们使用的是 free 和 awk 命令的组合来获取内存占用率. 要获取不包含百分比符号的内存占用率: #free -t | awk 'NR ==2 {print "CurrentMemory Utilization is: "$3/$2*100}' 或 #free -t | awk 'FNR ==2 {print"Current Memory Utilization is: &

查看系统内存 cpu占用率脚本

在工作中会有很多时候要查看系统负载的占用情况,可以使用命令 free top  ps 等等 但是可能需要的信息需要整理,现在做一个脚本能够规范的输出这些信息,增加可读性. #!/bin/bash ############################################################################### # 日期 : 2015-09-14 # 作者 : wangtenghe # Email : [email protected] # 版本 :1.

linux 下查看redis内存等占用量

用客户端连接redis服务器:  ./redis-cli -h ip :port >>info server : 一般 Redis 服务器信息,包含以下域: redis_version : Redis 服务器版本 redis_git_sha1 : Git SHA1 redis_git_dirty : Git dirty flag os : Redis 服务器的宿主操作系统 arch_bits : 架构(32 或 64 位) multiplexing_api : Redis 所使用的事件处理机制

不同编译器下的基本数据类型所占的内存大小

基本数据类型 所占的 存储空间 本篇文章主要介绍了"基本数据类型 所占的 存储空间",就是所占的内存大小,常见的基本数据类型包括int,long int,char,float,double float等. C语言各种数据类型及其在系统中占的字节和取值范围 C语言包含5个基本数据类型: void, int, float, double, 和 char. (另:C++ 定义了另外两个基本数据类型: bool 和 wchar_t.  一些基本数据类型能够被 signed, unsigned,

【转】android如何查看cpu的占用率和内存泄漏

原文网址:http://www.cnblogs.com/yejiurui/p/3472765.html 在分析内存优化的过程中,其中一个最重要的是我们如何查看cpu的占用率和内存的占用率呢,这在一定程度上很重要,经过查询资料,研究了一下,暂时了解到大概有以下几种方式,如果哪位高手有更好的办法,或者文中描述有错误,还望高手在下面留言,非常感谢! 一. 通过eclipse,ADT开发工具的DDMS来查看(Heap) 在“Devices”窗口中选择模拟器中的一个需要查看的程序,从工具条中选“Updat

JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降

上周,JavaScript 引擎「V8」的开发团队在该项目官方网站上正式宣布推出最新的 8.0 版本.这次更新的重点主要集中在错误修复及性能改善上,正式的版本将在数周后随着谷歌 Chrome 80 稳定版一起发布. V8 是谷歌公司推出的开源高性能 JavaScript 引擎,主要用于提升 Web 浏览器内部 JavaScript 脚本执行的性能.V8 通过 C++ 语言编写,主要用在 Chrome 浏览器以及 Node.js 上,实现了对 ECMAScript 与 WebAssembly 的支