import matplotlib.pyplot as plt
import matplotlib
import datetime
matplotlib.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 设置中文字体
matplotlib.rcParams['axes.unicode_minus'] = False # 正确显示负号
def read_log_file(file_path):
times = []
virt_values = []
res_values = []
with open(file_path, 'r') as file:
for line in file:
parts = line.split()
if len(parts) < 5:
continue
time_str = parts[0] + ' ' + parts[1]
time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
times.append(time)
virt = int(parts[2]) / 1024
virt_values.append(virt)
res = float(parts[3].replace('g', '')) * 1024
res_values.append(res)
return times, virt_values, res_values
def plot_data(times, virt_values, res_values):
plt.figure(figsize=(10, 5))
plt.plot(times, virt_values, label='VIRT (MB)', color='b')
plt.plot(times, res_values, label='RES (MB)', color='r')
plt.xlabel('时间')
plt.ylabel('内存 (MB)')
plt.title('内存使用')
plt.get_current_fig_manager().window.title('内存监测')
# 设置y轴刻度间隔
plt.yticks(range(0, int(max(virt_values)) + 500, 500))
plt.tick_params(axis='y', left=False) # 删除x轴刻度
plt.tick_params(axis='x', bottom=False) # 删除y轴刻度
plt.legend()
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
if __name__ == '__main__':
file_path = 'top.log'
times, virt_values, res_values = read_log_file(file_path)
plot_data(times, virt_values, res_values)