Python 如何获取Android应用内存使用和CPU占用信息,并且时时展示曲线图形。
2017-03-27 09:49
2136 查看
Python 如何获取Android应用内存使用和CPU占用信息,并且时时展示曲线图形。
最近测试公司产品时发现进入聊天界面后再退出,内存占用没有减小。考虑到其他测试人员没有产品源代码查看权限,又不懂怎么使用Android Studio ,如果需要测试某些地方的内存和CPU占用情况,可能需要另外的辅助工具,一边测试一边查看内存和CPU占用情况,能够快速的找到某些操作会导致内存增加了而且没有释放掉。在下才疏学浅,不知道是否还有其他更牛逼的工具(如果你知道有可以告诉我,跪求教育可怜),于是自己动手写。好吧 !废话不多说,开始正题。想要获取 某个应用内存和CPU占用信息,使用两个adb命令就行
内存 :adb shell dumpsys meminfo 包名
CPU占用:adb shell top -m 100 -n 1 -s cpu
当我们在终端输入 adb shell dumpsys meminfo 包名 ,我们知道图中圈出来的数字是我们的内存使用总和,就是我们要的数据
那我们想要实时的展示这个数据,就要实时的去获取,那就简单了,我们先写方法,然后按照一点时间差去执行这两个命令就好了。
def getTotalPss(): lines = os.popen("adb shell dumpsys meminfo com.hellotalk ").readlines() #逐行读取 total = "TOTAL" for line in lines: if re.findall(total, line): # 找到TOTAL 这一行 lis = line.split(" ") #将这一行,按空格分割成一个list while '' in lis: # 将list中的空元素删除 lis.remove('') return lis[1] #返回总共内存使用
cpu占有率也是同样的道理
def getCpu(): li = os.popen("adb shell top -m 100 -n 1 -s cpu").readlines() name = "com.hellotalk" for line in li: if re.findall(name,line): cuplist = line.split(" ") if cuplist[-1].strip() == 'com.hellotalk': while '' in cuplist: # 将list中的空元素删除 cuplist.remove('') return float(cuplist[2].strip('%')) #去掉百分号,返回一个float
写完两个方法后,就开始 写获取数据了,为了能时时展示曲线图,这里我们要用到 matplotlib 这个库,我借鉴了下网络上一些写法,修改了下
比较简单,代码如下:
from matplotlib import pyplot as plt from matplotlib import animation fig = plt.figure() ax1 = fig.add_subplot(2,1,1,xlim=(0, 100), ylim=(0, 350)) ax2 = fig.add_subplot(2,1,2,xlim=(0, 100), ylim=(0, 100)) line, = ax1.plot([], [], lw=2) line2, = ax2.plot([], [], lw=2) x = [] y= [] y2 = [] def init(): line.set_data([], []) line.set_data([], []) return line,line2 def getx(): t = "0" return t def animate(i): x.append(int(getx())+i) y.append(int(getTotalPss())/1024) #每执行一次去获取一次值加入绘制的data中 y2.append(getCpu()) print x,y line.set_data(x,y) line2.set_data(x,y2) return line,line2 anim1 = animation.FuncAnimation(fig, animate, init_func=init, frames=1000, interval=30) plt.show()
效果图:
相关文章推荐
- Android 获取手机内存,cpu使用信息
- 使用python获取CPU和内存信息(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 如何利用Java获取系统的信息(CPU、内存、各盘符使用情况)
- 使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 如何利用Java获取系统的信息(CPU、内存、各盘符使用情况)
- 使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
- python自动化运维学习------使用模块psutil获取系统cpu、内存、磁盘、网络、进程等信息
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- Android获取系统cpu信息,内存,版本,电量等信息
- Android系统信息(内存、cpu、sd卡、电量、版本)获取