Python神器:psutil库使用详解 中,介绍了python psutil库,获取系统运行时的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息,用于系统监控,性能分析,进程管理等场景。

Pyecharts,配合psutil使用,它能够将监控到的数据转化为生动活泼的图表,你在数据的海洋中自如驰骋,尽情挥洒创造力。接下来就着我一起进入这个充满魔法的数据可视化世界吧!

首先,我们需要安装 Pyecharts。
pip install pyecharts
  • 1.

Pyecharts 是一款基于 Python 的数据可视化库,它支持多种类型的图表,包括折线图、柱状图、散点图、地理图等等,可以帮助用户快速生成高质量的图表。Pyecharts 具有以下几个特点:

  • 易于上手:Pyecharts 提供了直观的 API,使得用户可以轻松地创建各种类型的图表。同时,Pyecharts还提供了详细的文档和示例代码,方便用户参考。
  • 多种类型的图表:Pyecharts 支持多种类型的图表,包括折线图、柱状图、散点图、地理图等等,用户可以根据自己的需求选择不同类型的图表。
  • 丰富的交互功能:Pyecharts 提供了丰富的交互功能,包括鼠标悬停提示、数据筛选、图表联动等等,可以增强用户对数据的理解。
  • 可扩展性强:Pyecharts 支持将图表嵌入到 Flask、Django 等 Web 框架中,并支持 Jupyter、Notebook、Spyder 等 Python IDE。

因此Pyecharts 是一个功能强大、易于上手的数据可视化库,能够帮助用户快速生成高质量的图表,增强对数据的理解和分析。

1 折线图:起伏的数据轨迹:

根据psutil库监控内存占用并将数据保存到memory.txt中

使用pyecharts库来自动生成内存占用折线图,并输出到memory_monitor_line.html网页上呈现,代码如下:


import os
from pyecharts import options as opts
from pyecharts.charts import Line
from pyecharts.charts import Bar


def output_memory_line_chart():
    # 获取当前脚本所在的目录
    cur_dir = os.path.dirname(os.path.abspath(__file__))

    # 获取折线图需要绘制的数据信息
    x = []
    y = []
    with open(cur_dir + '/memory.txt') as f:
        for line in f:
            space_index = line.find(' ')
            if space_index != -1:
                data = line[space_index + 1:]  # 切片操作,保留空格之后的部分
                time, per = data.strip().split()
                x.append(time)
                y.append(float(per))  # 将字符串转换为浮点数

    line = (
        Line()
        .add_xaxis(x)
        .add_yaxis("内存使用监控", y, label_opts=opts.LabelOpts(is_show=True))
        .set_global_opts(title_opts=opts.TitleOpts(title="内存使用监控,单位:MB"))
    )

    line.render(path=cur_dir + '/memory_monitor_line.html')


if __name__ == '__main__':
    # 调用函数生成折线图
    output_memory_line_chart()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.

代码解释说明:

- space_index = line.find(' '):查找字符串中第一个空格的位置。
- if space_index != -1::判断是否找到了空格,避免空行导致的错误。
- data = line[space_index + 1:]:使用切片操作,获取空格之后的部分字符串。
- time, per = data.strip().split():使用strip()方法去除字符串两端的空格,并使用split()方法将字符串拆分为时间和内存占用MB两部分。

这样就可以得到每一行数据中的时间和内存占用MB,分别赋值给time和per变量。在后续的代码中,可以根据需要对这些值进行处理或者使用。

 - data = line[space_index + 1:] 这行代码的作用是获取字符串 line中第一个空格后面的部分字符串,并将其赋值给变量 data。
 - 这里使用了切片操作符 [start:end],其中 start表示切片的起始位置(包含),end 表示切片的结束位置(不包含),如果省略 start 或 end 则表示从字符串的开头或结尾开始切片。
 - 在这里,space_index + 1 表示从第一个空格的下一个位置开始切片,即去掉了空格本身,这样就可以得到字符串中空格后面的部分。
 - 例如,如果 line 的值为"2024-01-21 10:30:00 33.7",那么经过切片操作后,data 的值将为 "10:30:00 33.7"。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.