首页 > 编程知识 正文

用Python实现简易内存监控

时间:2023-11-19 19:05:50 阅读:302704 作者:IORC

本文将详细阐述如何使用Python实现一个简易的内存监控工具。我们将从以下几个方面进行介绍:

一、获取系统内存信息

首先,我们需要在Python中获取系统的内存信息。可以使用psutil模块来实现这个功能。

import psutil

mem = psutil.virtual_memory()
total = mem.total     # 总内存
available = mem.available   # 可用内存
used = mem.used     # 已用内存
percentage = mem.percent   # 内存使用百分比

print("总内存:", total)
print("可用内存:", available)
print("已用内存:", used)
print("内存使用率:", percentage)

上述代码通过psutil模块获取了系统的内存信息,并打印出了总内存、可用内存、已用内存和内存使用率。

二、定时监控系统内存

为了实现内存的实时监控,我们可以使用threading模块创建一个线程来定时获取系统的内存信息。

import psutil
import threading
import time

def monitor_memory(interval):
    while True:
        mem = psutil.virtual_memory()
        total = mem.total
        available = mem.available
        used = mem.used
        percentage = mem.percent

        # 将内存信息保存到日志文件中
        with open("memory_log.txt", "a") as file:
            file.write("总内存:{} 可用内存:{} 已用内存:{} 使用率:{}n".format(total, available, used, percentage))

        time.sleep(interval)

# 创建一个线程来执行内存监控函数
memory_thread = threading.Thread(target=monitor_memory, args=(10,))
memory_thread.start()

上述代码创建了一个线程,每隔10秒获取一次系统内存信息,并将内存信息保存到名为memory_log.txt的日志文件中。

三、展示内存监控结果

为了更直观地展示内存监控的结果,我们可以使用matplotlib库绘制一个内存使用率的折线图。

import psutil
import threading
import time
import matplotlib.pyplot as plt

memory_usage = []   # 记录内存使用率

def monitor_memory(interval):
    while True:
        mem = psutil.virtual_memory()
        total = mem.total
        available = mem.available
        used = mem.used
        percentage = mem.percent

        with open("memory_log.txt", "a") as file:
            file.write("总内存:{} 可用内存:{} 已用内存:{} 使用率:{}n".format(total, available, used, percentage))

        memory_usage.append(percentage)   # 记录内存使用率

        time.sleep(interval)

def plot_memory_usage():
    while True:
        plt.plot(memory_usage)
        plt.xlabel("Time")
        plt.ylabel("Memory Usage (%)")
        plt.title("Memory Monitor")
        plt.show()
        time.sleep(60)

# 创建两个线程,分别用于内存监控和展示内存使用率的折线图
memory_thread = threading.Thread(target=monitor_memory, args=(10,))
memory_thread.start()

plot_thread = threading.Thread(target=plot_memory_usage)
plot_thread.start()

上述代码通过matplotlib库绘制了一个折线图,以展示内存使用率的变化。每隔10秒获取一次内存信息,并记录下来,然后每隔60秒绘制一次折线图。

四、结语

本文介绍了如何使用Python实现一个简易的内存监控工具。通过获取系统内存信息、定时监控和展示内存使用率的折线图,我们可以更好地了解系统的内存情况。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。