所以我有一个问题。我有两个正在运行的脚本,它们是一个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()
如果可以将其集成为一个脚本,那就太好了,但是我正在尝试学习基础知识。我认为写入txt文件是字符串问题,但不知道为什么字符串会在txt文件中起作用。
答案 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百分比转换为float:
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)