import psutil
import sys
import os
def get_pid_list():
pid_list = []
for i in psutil.pids(): # 用PID遍历本机应用
try: # 跳过无name进程的报错
pro = psutil.Process(i)
if exe_name in pro.name():
pid_list.append(pro)
except:
pass
return pid_list
def get_men():
list1 = []
for i in get_pid_list():
list1.append(i.memory_full_info().uss/1024/1024)
return list1
def get_cpu():
list1 = []
for i in get_pid_list():
list1.append(i.cpu_percent())
return list1
def get_threads():
list1 = []
for i in get_pid_list():
list1.append(i.num_threads())
return list1
def get_rows():
a = len(get_pid_list())
men = ''
cpu = ''
threads = ''
for i in range(1,a+1):
men += f' men{str(i)}'
cpu += f' cpu{str(i)}'
threads += f' threads{str(i)}'
return 'time' + men + ' men_total' + cpu + 'cpu_tatol '+ threads + ' threads_total'
def get_timestamp():
import time
return str(time.time())
def list_to_str(l):
ll = ''
for i in l:
ll += (' ' + str(i))
return ll
def write_to_txt(file):
# os.chdir(r'D:adb')
if not os.path.exists(file): # 文件不存在就新建,并写入标签
with open(file,mode='w') as op:
op.write(get_rows())
with open(file, 'a+') as op: # 逐行写入性能数据
# time.sleep(1)
op.write('n' + get_timestamp() + list_to_str(get_men()) + ' ' + str(sum(get_men())) + list_to_str(get_cpu()) + ' ' + str(sum(get_cpu())) + list_to_str(get_threads()) + ' ' +str(sum(get_threads())))
if __name__ == '__main__':
while True:
exe_name = sys.argv[2] # sys.argv 接受外部参数
write_to_txt(sys.argv[1])
import datetime
import subprocess
import sys
import time
from matplotlib import pyplot as plt
import numpy
def get_timestamp():
return time.strftime("%Y%m%d%H%M%S", time.localtime())
def test_name(file_name):
exe_name = 'chrome.exe'
p = subprocess.Popen(
r'python C:Users86181PycharmProjectszidongget_data.py ' + file_name + ' ' + exe_name) # cmd命令执行
return p
def plot_1(file_name):
data1 = numpy.loadtxt(file_name, skiprows=1, unpack=1)
# 逐行读取TXT为多维列表,跳过第一行,行列倒置
with open(file_name, 'r') as op: # 读取第一行
label = op.readline().strip().split(' ')
for i in range(1, len(label)):
plt.plot(data1[0], data1[i])
[a, b] = numpy.polyfit(data1[0], data1[i], 1) # 数据拟合
new_y = []
for k in data1[0]:
new_y.append(a * k + b)
plt.plot(data1[0], new_y)
plt.xlabel('time')
plt.ylabel(label[i])
plt.title(label[i])
plt.grid(True)
plt.savefig(label[i] + '.png')
if __name__ == "__main__":
file_name = get_timestamp() + '.txt'
# 时间戳 + 方法名 sys._getframe().f_code.co_name
p = test_name(file_name)
# ?????
time.sleep(10)
p.kill()
plot_1(file_name)