Python3 Matplotlib psutil脚本未运行

时间:2020-06-30 19:40:50

标签: python python-3.x matlab psutil

所以我有一个问题。我有两个正在运行的脚本,它们是一个CPU和每秒的时间记录器,用于将CPU使用情况记录到一个文本文件中。另一个是脚本,它将文本文件读入图形中,但是图形不是统一轴,并且不会以单位增加,因此我得到了错误的输出视图。

脚本1:将PSU和时间记录到txt文件

import psutil import time
print(str(time.strftime("%H:%M:%S", time.localtime())) + ", " +
      str(psutil.cpu_percent(interval=1)))
f = open("example.txt", "a+")
f.write(str(time.strftime("%H:%M:%S", time.localtime())) + 
      ", " + str(psutil.cpu_percent(interval=1)) + " \n")

程序2:绘制到图形

import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style

style.use('fivethirtyeight')

fig = plt.figure() ax1 = fig.add_subplot(1,1,1)

def animate(i):
    graph_data = open ('example.txt','r').read()
    lines = graph_data.split('\n')
    xs = []
    ys = []
    for line in lines:
        if len(line) > 1:
            x, y = line.split(',')
            xs.append(x)
            ys.append(y)
    ax1.clear()
    ax1.plot(xs, ys)

ani = animation.FuncAnimation(fig, animate, interval=1000) plt.show()

Script2 output

如果可以将其集成为一个脚本,那就太好了,但是我正在尝试学习基础知识。我认为写入txt文件是字符串问题,但不知道为什么字符串会在txt文件中起作用。

1 个答案:

答案 0 :(得分:0)

我想您将需要在TXT o CSV文件中写入的字符串由生成(在CSV中,以前更容易阅读):

import time
import psutil
import csv

num_measures = 10
with open("cpu_pcnt.csv", mode='w') as file:
    for _ in range(num_measures): 
        str_time = time.strftime("%H:%M:%S")
        cpu_pcnt = psutil.cpu_percent(interval=1)
        str_data = f"{str_time},{cpu_pcnt}\n"
        file.write(str_data)

然后,将datetime对象中的时间转换为绘图,然后将pcu百分比转换为f​​loat:

def animate(i):
    xs = []
    ys = []
    
    with open("cpu_pcnt.csv") as file:
        reader = csv.reader(file)
        for line in reader:
            xs.append(datetime.strptime(line[0], "%H:%M:%S"))
            ys.append(float(line[1]))
            
    ax1.clear()
    ax1.plot(xs, ys)